微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL在SQL SERVER 2019中拆分具有逗号的列

如何解决SQL在SQL SERVER 2019中拆分具有逗号的列

嗨,我正在寻找帮助来拆分sql中包含逗号的列

enter image description here

解决方法

数据库的类型在这里很重要,但是您没有列出其中的一个。在那里发布了许多解决方案(搜索如何在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 举报,一经查实,本站将立刻删除。