从具有多个char(13)行的列​​中分离数据到自己的列中

时间:2018-08-24 20:18:57

标签: sql-server database reporting-services sql-server-2008-r2 ssrs-2008

当该字段在SSRS中显示时,该字段称为fmstreet,其中包含以 ATTN开头的经理名称:Store Manger,街道地址1和街道地址2 。数据在SSMS中的显示方式为ATTN:Brian Adams 343 Albert Ave 17th Street。这将显示SSRS中的字段

  

ATTN:Brian Adams
  阿尔伯特大街343号
  第十七街

我已经能够将第一行添加到它自己的列中,但是不确切地知道如何执行其他两行。另外,有些行只有一个街道地址,而没有两个。

SELECT somast.fsono, 
somast.fcustno,
somast.fcontact,
soship.fmstreet,
Case When cast(soship.fmstreet AS CHAR(100)) like 'ATTN:%'
Then LEFT(cast(soship.fmstreet AS CHAR(100)),CHARINDEX(CHAR(13),cast(soship.fmstreet AS CHAR(100))))
End as 'Attention'
FROM  soitem
INNER JOIN somast ON soitem.fsono = somast.fsono
LEFT OUTER JOIN oship ON somast.fsono = soship.fcsono AND soship.fcenumber = ''
WHERE  (somast.fstatus <> 'Cancelled') AND (somast.fsocoord = 'IFP'
OR somast.fsocoord = '711');

2 个答案:

答案 0 :(得分:0)

这是因为您正在对网格进行结果...将SSMS输出更改为文本结果,然后您会看到换行符。工具>选项>查询结果>结果文本,或单击工具栏上的按钮,即下图左侧的按钮:

enter image description here

答案 1 :(得分:0)

我认为您最好的选择是使用SSRS中的Split函数,我认为您可以基于char(13)拆分字符串。这篇文章似乎可以正确地指导您,我肯定会像建议的那样检查该值的存在。

ssrs expression to split string possible?