所以这是起点

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/

10-09 00:14