我有一个功能来分割CSV。我有这样的数据:SQL Server:分割CSV
identifier values
123 abc,def,ghi
124 jre,ds,qwert
而且我所要的输出是:
123 abc
123 def
123 ghi
124 jre
124 ds
124 qwert
我如何去这样做呢?
感谢, 哈利
这是我目前有;
SELECT CustomRecordsetId, LTRIM(Value) AS my_values
FROM
(
SELECT *,
CAST('<X>'+replace(Value,',','</X><X>')+'</X>' as XML) as my_Xml
FROM dbo.CustomFieldValue where CustomFieldId=177
) T1
CROSS APPLY
(
SELECT my_Data.D.value('.','varchar(50)') as my_Splits
FROM T1.my_Xml.nodes('X') as my_Data(D)
) T2
虽然这是返回;
id | values
596 | 151, 313
596 | 151, 313
603 | 165
604 | 187
605 | 174
606 | 181, 182
606 | 181, 182
作为一个方面说明。不要以这种方式存储您的数据。 – Zane
作为一个脚注。告诉我们你试过的东西。 – Kermit
我正在尝试第一个链接。我对mssql命令不是很好(好吧,除了nosql以外,一般都是db)。 Zane:我不这样做,这是一种可怕的做法。我正在从一个可怕的软件中导出数据库,我必须做一个查找,查找,连接,然后再查找一个数据库,只是为了得到一个相关的字段(当它们可能在相邻的列中彼此相邻时)。 不幸的是,我不再拥有我所做的,因为我只是替换了代码。将来,我会保持我所做的。 –