如何解决SQL在SQL SERVER 2019中拆分具有逗号的列
嗨,我正在寻找帮助来拆分sql中包含逗号的列
解决方法
数据库的类型在这里很重要,但是您没有列出其中的一个。在那里发布了许多解决方案(搜索如何在sql中删除电子邮件地址)。
这就是我在postgres中要做的事情...
select
c1,split_part(c1,',1) AS c2,2) AS c3
from table_name
,
SQL Server 2019提供了一个名为string_split()
的内置字符串拆分器,可以将CSV字符串转换为行。 las,它无法跟踪CSV字符串中每个元素的原始位置,这使其不适用于您这样的任务。
但是,我们可以使用openjson()
技巧:想法是稍微操纵字符串以使其成为有效的JSON数组,然后我们可以将其取消嵌套(按顺序!)。
考虑:
select t.*,x.*
mytable t
cross apply (
select
max(case when key = 1 then value end) col1,max(case when key = 2 then value end) col2,max(case when key = 3 then value end) col3,...
from openjson('["' + replace(@str,'","') + '"]')
) x;
当然,这要求您事先知道结果集中所需的最大列数。您可以使用其他条件表达式扩展子查询的select
子句以生成更多列。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。