拆分逗号分隔字符串的最快方法是使用数字表。如果数据库中没有数字表,则使用此代码创建一个
-- Create our Pivot table ** do this only once
CREATE TABLE NumberPivot (NumberID INT PRIMARY KEY)
INSERT INTO NumberPivot
SELECT number FROM master..spt_values
where type = 'P'
GO
现在,您可以运行以下代码来返回逗号分隔字符串中每个值在其自己的行中
DECLARE @SplitString VARCHAR(1000)
SELECT @SplitString ='1,4,77,88,4546,234,2,3,54,87,9,6,4,36,6,9,9,6,4,4,68,9,0,5,3,2,'
SELECT SUBSTRING(',' + @SplitString + ',', NumberID + 1,
CHARINDEX(',', ',' + @SplitString + ',', NumberID + 1) - NumberID -1)AS VALUE
FROM NumberPivot
WHERE NumberID <= LEN(',' + @SplitString + ',') - 1
AND SUBSTRING(',' + @SplitString + ',', NumberID, 1) = ','
GO
您也可以通过使用"独特"返回不同的值
DECLARE @SplitString VARCHAR(1000)
SELECT @SplitString ='1,4,77,88,4546,234,2,3,54,87,9,6,4,36,6,9,9,6,4,4,68,9,0,5,3,2'
SELECT DISTINCT SUBSTRING(',' + @SplitString + ',', NumberID + 1,
CHARINDEX(',', ',' + @SplitString + ',', NumberID + 1) - NumberID -1)AS VALUE
FROM NumberPivot
WHERE NumberID <= LEN(',' + @SplitString + ',') - 1
AND SUBSTRING(',' + @SplitString + ',', NumberID, 1) = ','
现在,您可以将结果转储到表中,然后可以将其中一个真实表与该表联接,该表的执行速度会快得多
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。