SQL Server如何按规则截取字符串生成新查询列
SQL Server 字符串提取查询实现
你可以通过CHARINDEX定位关键字符位置,搭配SUBSTRING实现指定内容截取,以下是可直接运行的查询语句:
SELECT col1, SUBSTRING(col1, first_space_pos + 1, first_comma_pos - first_space_pos - 1) AS col2, SUBSTRING(col1, first_comma_pos + 2, second_comma_pos - first_comma_pos - 2) AS col3 FROM -- 替换为你实际的表名 your_table_name CROSS APPLY ( -- 提前计算关键位置下标,避免重复调用函数、提升可读性 SELECT CHARINDEX(' ', col1) AS first_space_pos, CHARINDEX(',', col1) AS first_comma_pos, CHARINDEX(',', col1, CHARINDEX(',', col1) + 1) AS second_comma_pos ) AS pos_calc
逻辑说明
- 用
CROSS APPLY计算3个核心位置:第一个空格的下标、第一个逗号的下标、第二个逗号的下标 col2的截取逻辑:起始位置为第一个空格下标+1,截取长度为「第一个逗号下标 - 第一个空格下标 - 1」,刚好取到第一个空格后、第一个逗号前的内容col3的截取逻辑:起始位置为第一个逗号下标+2(跳过逗号和后面紧跟的空格),截取长度为「第二个逗号下标 - 第一个逗号下标 - 2」,刚好取到第一个逗号+空格后、第二个逗号前的内容
如果需要兼容格式异常的数据,可以添加位置有效性判断,比如如果first_comma_pos为0说明字段中没有逗号,可以返回空值或者自定义默认值。
内容的提问来源于stack exchange,提问作者dingaro
相关产品推荐
相关产品推荐

