Split Text SQL - 拆分单元格:提取colval列首个|前的数字
提取colval列第一个|前的数字内容
针对不同数据库,提供以下实现方案:
MySQL/MariaDB
利用SUBSTRING_INDEX截取第一个|前的内容,再通过REGEXP_SUBSTR确保提取纯数字:
SELECT colval, SUBSTRING_INDEX(colval, '|', 1) AS first_segment, REGEXP_SUBSTR(SUBSTRING_INDEX(colval, '|', 1), '[0-9]+') AS target_digits FROM your_table;
- 如果第一个
|前的内容本身就是纯数字,直接使用SUBSTRING_INDEX(colval, '|', 1)即可得到结果。
SQL Server
通过CHARINDEX定位|的位置,结合LEFT和PATINDEX提取数字:
SELECT colval, LEFT(colval, CHARINDEX('|', colval) - 1) AS first_segment, SUBSTRING(colval, PATINDEX('%[0-9]%', colval), CHARINDEX('|', colval) - PATINDEX('%[0-9]%', colval)) AS target_digits FROM your_table WHERE CHARINDEX('|', colval) > 0;
WHERE条件用于过滤不含|的行,可根据实际需求调整。
PostgreSQL
使用SPLIT_PART拆分字段,再用SUBSTRING匹配数字:
SELECT colval, SPLIT_PART(colval, '|', 1) AS first_segment, SUBSTRING(SPLIT_PART(colval, '|', 1) FROM '[0-9]+') AS target_digits FROM your_table;
额外说明
- 若字段中不存在
|符号,可根据需求选择保留原内容或过滤行,例如添加WHERE colval LIKE '%|%'。 - 若第一个
|前的内容无多余非数字字符,可省略正则提取步骤,直接使用拆分后的结果。
内容的提问来源于stack exchange,提问作者Davis Middeke
相关产品推荐
相关产品推荐

