SQL server如何将逗号分隔的字符串进行分拆截取
时间: 2023-05-26 08:07:10 浏览: 418
用SQL语句截取字符串
在 SQL Server 中将逗号分隔的字符串进行分拆截取,可以使用以下方法:
1. 使用内置函数 STRING_SPLIT()
该函数在 SQL Server 2016 及以上版本中提供,可以将一个字符串按照指定分隔符分隔成多个子字符串,并返回一个表(Table)。
例如,假设有一个逗号分隔的字符串:'apple,banana,orange',可以使用以下代码将其分隔成多个子字符串:
```sql
SELECT * FROM STRING_SPLIT('apple,banana,orange', ',')
```
输出结果:
```
value
-----
apple
banana
orange
```
可以将该结果插入到临时表中,然后进行进一步处理。
2. 使用自定义函数
如果使用的 SQL Server 版本不支持内置函数 STRING_SPLIT(),则可以编写自定义函数进行字符串分隔截取。例如,下面是一个使用 SQL Server 中的 XML 数据类型和内置函数的自定义函数:
```sql
CREATE FUNCTION [dbo].[SplitString](@str NVARCHAR(MAX), @delimiter NVARCHAR(1))
RETURNS @result TABLE (
id INT IDENTITY(1, 1) PRIMARY KEY,
value NVARCHAR(MAX)
)
AS
BEGIN
DECLARE @xml XML
SET @xml = N'<root><s>' + REPLACE(@str, @delimiter, '</s><s>') + '</s></root>'
INSERT INTO @result(value)
SELECT s.value
FROM @xml.nodes('/root/s') AS x(s)
RETURN
END
```
使用以上代码创建自定义函数 SplitString() 后,就可以像使用内置函数一样调用:
```sql
SELECT * FROM dbo.SplitString('apple,banana,orange', ',')
```
输出结果同样为:
```
id value
-- -----
1 apple
2 banana
3 orange
```
以上两种方法都可以对逗号分隔的字符串进行分隔截取,根据实际情况选择适用的方法。
阅读全文