【发布时间】:2019-12-20 22:59:02
【问题描述】:
我在名为 [City_St_Zip] 的 sql server 表中有一个列,其中包含如下所示的记录
达拉斯,德克萨斯州 12345
我想做的是将该列分成三个不同的列(即城市、州和邮编) 像这样:
达拉斯
发送
12345
我不知道如何在 SQL 中解决这个问题
我已经尝试了以下
DECLARE @X NVARCHAR(100),
DECLARE @T NVARCHAR(100),
SELECT
@X = [City_St_Zip],
@T = [NewDivision]
FROM
dbo.Invoice
CROSS APPLY STRING_SPLIT(@X, ',');
这产生了 0 个结果,所以我很确定我做错了
有什么建议吗?我正在使用 SQL Server 2019
编辑: 我也试过这个更接近我想要的
SELECT
value
FROM
dbo.Invoice
CROSS APPLY STRING_SPLIT([City_St_Zip], ',');
这给了我一个结果集:
达拉斯
TX 12345
所以我猜这很复杂,需要逗号和空格分隔符。我可以将值放入另一个 STRING_SPLIT 吗?
【问题讨论】:
-
您将逗号传递给
STRING_SPLIT作为分隔符,但在您的示例中,您似乎想用空格分隔。另外,为什么不将[City_St_Zip]传递给函数而不是@X?此外,如果您确实想用空格分割,您应该考虑如何处理名称中包含多个单词的城市。 -
您的选择列不包括来自
string_split的value输出,在这种情况下将是null,因为您尝试拆分@x而不是您的City_St_Zip柱子。请参阅 String_Split 文档,https://docs.microsoft.com/en-us/sql/t-sql/functions/string-split-transact-sql -
@devlincarnate 我尝试了你的建议,请查看更新后的问题
-
@AlwaysLearning 这对我来说是一个糟糕的事情,感谢您指出我已修复它
-
字符串拆分错误。 Fort Worth, TX 00000 将破裂
标签: sql sql-server