SQLSERVER 分割字符串
时间: 2024-02-10 21:02:20 浏览: 77
在 SQL Server 中,可以使用字符串函数和 XML 解析器来分割字符串。
以下是一个例子:
假设有一个字符串 "applebanana,cherry",我们想要将它分割成三个单独的字符串。
1. 使用字符串函数:
可以使用内置的字符串函数 `CHARINDEX`、`SUBSTRING` 和 `LEN` 来实现字符串分割。具体步骤如下:
```sql
DECLARE @str VARCHAR(MAX) = 'apple,banana,cherry';
DECLARE @delimiter CHAR(1) = ',';
SELECT SUBSTRING(@str, 1, CHARINDEX(@delimiter, @str)-1) AS val1,
SUBSTRING(@str, CHARINDEX(@delimiter, @str)+1, LEN(@str)-CHARINDEX(@delimiter, @str)-LEN(REPLACE(@str, @delimiter, ''))) AS val2,
SUBSTRING(@str, CHARINDEX(@delimiter, @str, CHARINDEX(@delimiter, @str)+1)+1, LEN(@str)-CHARINDEX(@delimiter, @str, CHARINDEX(@delimiter, @str)+1)-LEN(REPLACE(@str, @delimiter, ''))) AS val3
```
2. 使用 XML 解析器
SQL Server 中的 XML 解析器可以将字符串解析为 XML 文档,然后使用 XPath 表达式来查询其中的节点值。具体步骤如下:
```sql
DECLARE @str VARCHAR(MAX) = 'apple,banana,cherry';
DECLARE @delimiter CHAR(1) = ',';
SELECT t.c.value('.', 'VARCHAR(MAX)') AS value
FROM (SELECT CAST('<t>' + REPLACE(@str, @delimiter, '</t><t>') + '</t>' AS XML) AS x) AS y
CROSS APPLY x.nodes('/t') AS t(c)
```
阅读全文