4
我找不到一个好的方法来做到这一点,由于一些限制,它必须是一个不使用变量的编码,但我可以调用一个函数。无论如何,我需要从Select查询返回一个结果集,其中一行是一个管道分隔字符串。SQL解析分隔字符串
所以,它会返回类似:
id| Name | Message |
---------------------
1 | Some Name | 'Here is my | delimited | message'
,我需要它是
id| Name | Message1 | Message2 | Message3
------------------------------------------------------
1 | Some Name | 'Here is my' | 'delimited' | 'message'
我想的有点像Parsename('','|',1)
,在那里你可以在分隔符通过它来代替始终是一个时期,但我不知道实现这一目标的最佳方法。
编辑:我试过的这个变化,但当然是非常混乱。可能有4个或更多| |
SELECT Field1,
Field2 AS Originalvalue,
--1
SUBSTRING(Field2,0,CHARINDEX('|',Field2)) AS Msg1,
--2
LEFT(SUBSTRING(Field2,CHARINDEX('|',Field2)+1 ,LEN(Field2)),CHARINDEX('|',SUBSTRING(Field2,CHARINDEX('|',Field2)+1 ,LEN(Field2)))-1)
AS ExtractedValue
FROM Table1 T1 JOIN Table2 T2
ON T1.Id = T2.Id
WHERE T1.Id = 12
为什么人们[继续这样做(http://stackoverflow.com/search?q=sql+delimited)? – Phil
管道分隔的字段使SQL仙子死亡 – scrappedcola
嗯,人们不回答这个网站上的问题吗?这似乎是很多“去看看谷歌”。我一直在寻找一个多小时,我还没有找到我正在寻找的东西。 – user204588