Sql 按照分隔符顺序截取
时间: 2023-07-01 16:24:33 浏览: 70
如果您需要按照分隔符的顺序对字符串进行截取,可以使用 SQL 中的 SUBSTRING 函数结合 CHARINDEX 函数实现。具体方法如下:
1. 使用 CHARINDEX 函数查找第一个分隔符的位置。
```
CHARINDEX(',', str)
```
其中,str 表示要截取的字符串,',' 表示分隔符。
2. 使用 SUBSTRING 函数截取从字符串开始到第一个分隔符的位置的子串。
```
SUBSTRING(str, 1, CHARINDEX(',', str) - 1)
```
其中,str 表示要截取的字符串,1 表示截取的起始位置,CHARINDEX(',', str) - 1 表示截取的结束位置。
3. 重复以上步骤,每次查找下一个分隔符的位置,并截取相应的子串。
例如,假设我们有一个字符串 'a,b,c,d,e',要按照逗号 ',' 的顺序对其进行截取,可以使用如下 SQL 语句:
```
SELECT SUBSTRING('a,b,c,d,e', 1, CHARINDEX(',', 'a,b,c,d,e') - 1) AS col1,
SUBSTRING('a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e') + 1, CHARINDEX(',', 'a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e') + 1) - CHARINDEX(',', 'a,b,c,d,e') - 1) AS col2,
SUBSTRING('a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e') + 1) + 1, CHARINDEX(',', 'a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e') + 1) + 1) - CHARINDEX(',', 'a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e') + 1) - 1) AS col3,
SUBSTRING('a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e') + 1) + 1) + 1, CHARINDEX(',', 'a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e') + 1) + 1) + 1) - CHARINDEX(',', 'a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e') + 1) + 1) - 1) AS col4,
SUBSTRING('a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e') + 1) + 1) + 1) + 1, LEN('a,b,c,d,e') - CHARINDEX(',', 'a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e', CHARINDEX(',', 'a,b,c,d,e') + 1) + 1) + 1)) AS col5
```
该语句将返回如下结果:
```
col1 col2 col3 col4 col5
a b c d e
```
其中,col1 到 col5 分别表示按照逗号分隔符顺序截取的第 1 到第 5 个子串。
阅读全文