日期:2014-05-17  浏览次数:20319 次

如何把三个以若干|和~分隔的字符串,输出成一张一定格式的表
举例:

@string1 = '56343~0~0.0~0.0~0.0|2.24~25628.28|2.26~193660.37|2.28~569704.62<更多诸如|2.24~25628.28不例举>'

@string2 = '25422~0~0.0~0.0~0.0|2.82~590.05|2.84~330.38|2.88~153.32<更多诸如|2.82~590.05不例举>'

@string3 = '58805~0~0.0~0.0~0.0|3.35~638.04|3.4~893.91|3.45~27770.75<更多诸如|3.35~638.04不例举>'

输出table
SelectionId    PriceTag    PriceValue
56343          2.24        25628.28
56343          2.26        193660.37
56343          2.28        569704.62
...            ...         ...
...            ...         ...
25422          2.82        590.05
25422          2.84        330.38
25422          2.88        153.32
...            ...         ...
...            ...         ...
58805          3.35        638.04
58805          3.40        893.91
58805          3.45        27770.75
...            ...         ...
...            ...         ...

不胜感谢!

------解决方案--------------------
字符串拆分函数 精华帖子里面很多
------解决方案--------------------
--笨办法
DECLARE @string1 VARCHAR(2000) 
SELECT @string1 = '56343~0~0.0~0.0~0.0
------解决方案--------------------
2.24~25628.28
------解决方案--------------------
2.26~193660.37
------解决方案--------------------
2.28~569704.62<更多诸如
------解决方案--------------------
2.24~25628.28不例举>'
DECLARE @str VARCHAR(50),@str1 VARCHAR(50),@str2 VARCHAR(50),@str3 VARCHAR(50)
SELECT @str = LEFT(@string1,CHARINDEX('
------解决方案--------------------
',@string1)-1)
SELECT @string1 = STUFF(@string1,1,CHARINDEX('
------解决方案--------------------
',@string1),'')
SELECT @str1 = LEFT(@string1,CHARINDEX('
------解决方案--------------------