我一直在寻找一个问题,那就是我需要在SQL Server 2012中拆分一个字符串并测试它可能包含或不包含的值。这些值如果存在,将由两个不同的;
符号分隔。SQL Server 2012在分隔符前后找到文本,有时没有分隔符
- 当没有任何东西时,它将是空白的。
- 当有一个值时,它将显示没有分隔符。
- 当有两个或更多,最多3个时,它们将被分隔符分隔。
正如我所说,如果记录中没有任何内容,它将是空白的。下面是该数据可能如何会遇到一些例如:
' ',
'1',
'24',
'15;1;24',
'10;1;22',
'5;1;7',
'12;1',
'10;12',
'1;5',
'1;1;1',
'15;20;22'
我已经搜查了论坛,并发现了许多线索,但我一直没能拿出给所有潜在的数据值的整体解决方案。本质上,我想将其分成3个单独的值。
第一个分隔符之前的文本或没有分隔符,只是文本。
第一个分隔符之后的文本和第二个之前有两个分隔符的情况。
下一贯致力于:在偶数第二分隔符之后
substring(SUBSTRING(Food_Desc, charindex(';', Food_Desc) + 1, 4), 0, charindex(';', SUBSTRING(Food_Desc, charindex(';', Food_Desc) + 1, 4))) as [Middle]
文本有两个分隔符和有第三个值
的主要挑战是,当存在时,分隔符根据表中的值移动。值1-9使其显示为字符串中的第二个字符,值10-24使其显示为第三等。
任何帮助将不胜感激。
如何从杰夫模式N [CSV分配器(http://www.sqlservercentral.com/articles此不同/ Tally + Table/72993 /),而不是只使用半个冒号? – HABO
大家好,谢谢你的回复。他们帮助我找到了我需要的解决方案。我试图在我的select语句中做所有事情,但是我发现了一个我可以调用的函数,它会将字符串分开: – Mike