所以这是起点
CREATE TABLE #Data (
ID INT IDENTITY(1,1),
MyData VARCHAR(200)
)
INSERT INTO #Data (Data) VALUES ('Test123, Test678')
INSERT INTO #Data (Data) VALUES ( 'abcd, efgh, mnop')
我想解析MyData列中逗号分隔的数据,并将其关联回相关的ID。所以最终结果将是
ID ParsedData
--------------
1 Test123
1 Test678
2 abcd
2 efgh
2 mnop
我可以通过游标做到这一点,但想避免它。有没有更好的方法编写查询呢?
最佳答案
最佳方法是much controversy的主题,并且还取决于字符串的长度,分隔符的频率,并发用法,并行计划的适用性,结果是否将用于JOIN
操作...
Erland Sommarskog does some performance tests here。
我已经链接到下面使用数字表的Adam Machanic的TSQL拆分函数。上面的链接中有更多负载。
1. Create a numbers table
2. Create a split function
SELECT ID,OutParam
FROM #Data
CROSS APPLY dbo.SplitString(MyData,',')
关于sql - 我可以避免在这里使用游标吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5156787/