我在一个表上有一个文本字段,我正试图在select语句中将它分解为两个独立的列。我发誓上次我用它的时候它对我有效,但是现在它抛出了一个错误“无效的长度参数”。我做错什么了?
从单个列中拆分数据,如下所示:
“公司-部门-地区-团队-主管”
分成两列,如:
主管团队
这是我曾经拥有的东西,我发誓曾经有用过,但现在已经没有了,我想不出来了!
Reverse(Left(Reverse(table.column),CHARINDEX(' ', Reverse(table.column))-1)) AS 'SUPERVISOR'
,LTRIM(LEFT(Substring(table.column,18,150),CHARINDEX(' - ', Substring(table.column,18,150))-1)) AS 'TEAM'
2条答案
按热度按时间bkhjykvo1#
如果您有一个已知的或最大的项目数,请考虑一点xml。也许更容易阅读和维护。
另外,如果你只对团队和主管感兴趣,你可以去掉pos1,pos2,pos3。
例子
退货
编辑
如果有非xml安全字符(<、>、…),请使用
lhcgjxsq2#
在sql server 2016中,您可以使用string\u split()来执行此操作。
字符串\u split()可以通过拆分这些多值列来帮助规范化数据。
我还使用了trim()函数(在sql server 2017中引入)来删除空格、cte、row\u number()和pivot。
在脚本下面: