将具有多个 char(13) 换行符的列中的数据分离到它们自己的列中

Posted

技术标签:

【中文标题】将具有多个 char(13) 换行符的列中的数据分离到它们自己的列中【英文标题】:Separating data from a column with multiple char(13) line breaks into their own columns 【发布时间】:2018-08-24 20:18:56 【问题描述】:

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

联系人:布莱恩·亚当斯 阿尔伯特大街 343 号 第 17 街

我已经能够将第一行放入它自己的列中,但不知道如何做另外两行。还有一些行只有一个街道地址而不是两个。

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');

【问题讨论】:

【参考方案1】:

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

s-s-rs expression to split string possible?

【讨论】:

谢谢你的链接,我会看看并报告。【参考方案2】:

这是因为您正在对网格进行结果...将您的 SSMS 输出更改为结果为文本,您将看到换行符。 Tools > Options > Query Results > Results To Text 或者直接点击工具栏上的按钮,就是下图左边的那个:

【讨论】:

这不是我要求做的。

以上是关于将具有多个 char(13) 换行符的列中的数据分离到它们自己的列中的主要内容,如果未能解决你的问题,请参考以下文章

将具有日期格式的列中的所有行转换为文本格式

用于以任何出现顺序匹配具有多个单词的列中的字符串的 Coredata 谓词

将 Spark Dataframe 中的多个列发送到外部 API 并将结果存储在单独的列中

将数据解析/反透视到熊猫数据框中的列中

如何防止表格单元格(不是单个单元格)的列中的换行?

来自多个数据框的pairplot列,由类别列中的类标记