sqlserver sql_split
时间: 2023-10-07 21:07:55 浏览: 71
mysql函数split功能实现
在 SQL Server 中,没有内置的 SQL_SPLIT 函数,但可以使用以下方法来拆分字符串:
1. 使用 XML
```
DECLARE @str varchar(100) = 'One,Two,Three,Four'
SELECT CAST('<x>' + REPLACE(@str, ',', '</x><x>') + '</x>' AS XML).value('/x[1]', 'varchar(100)') AS val1,
CAST('<x>' + REPLACE(@str, ',', '</x><x>') + '</x>' AS XML).value('/x[2]', 'varchar(100)') AS val2,
CAST('<x>' + REPLACE(@str, ',', '</x><x>') + '</x>' AS XML).value('/x[3]', 'varchar(100)') AS val3,
CAST('<x>' + REPLACE(@str, ',', '</x><x>') + '</x>' AS XML).value('/x[4]', 'varchar(100)') AS val4
```
2. 使用字符串函数和表值函数
```
DECLARE @str varchar(100) = 'One,Two,Three,Four'
DECLARE @table TABLE (value varchar(100))
DECLARE @pos int = 0, @nextpos int = 0, @val varchar(100)
WHILE CHARINDEX(',', @str, @pos+1) > 0
BEGIN
SET @nextpos = CHARINDEX(',', @str, @pos+1)
SET @val = SUBSTRING(@str, @pos+1, @nextpos-@pos-1)
INSERT INTO @table VALUES (@val)
SET @pos = @nextpos
END
SET @val = SUBSTRING(@str, @pos+1, LEN(@str)-@pos)
INSERT INTO @table VALUES (@val)
SELECT * FROM @table
```
这两种方法都可以实现字符串拆分,但是第二种方法比第一种方法更适用于大量数据的情况。
阅读全文