具有字符串“abcd | efg | hijkl”我需要将它分成以下三个值:“abcd”,“efg”和“hijkl”。这是非常简单的 - 考虑到分隔符可以改变它的位置,下面的代码将工作:SQL Server - 通过固定分隔符分割每个表格行
DECLARE @id VARCHAR(100), @line1 INT, @line2 INT
SET @id = 'abcd|efg|hijkl'
SET @line1 = (SELECT CHARINDEX('|', @id))+1
SET @line2 = (SELECT CHARINDEX('|', @id, CHARINDEX('|', @id)+1))
SELECT LEFT(@id, CHARINDEX('|', @id)-1) AS First
,SUBSTRING(@id, @line1, @[email protected]) AS Middle
,SUBSTRING(@id, @line2+1, len(@id)[email protected]) AS Last
现在,假设我有类似的字串的表,我想找回由列“第一”的表, '中间'和'最后',每个人都有适当的价值。 我知道我可以用@ line1和@ line2替换成select查询,但代码不会再被读取......怎么做?
感谢您快速的解答!唯一的一点是最后一行需要看起来像下面这样:outer apply(作为值,选择CHARINDEX('|',Id,CHARINDEX('|',Id)+1)作为行2 - 这将返回有效的结果。谢谢! – katta
哦,错过了最后一个支架的正确位置。你是对的。 –