【问题标题】:Splitting columns over multiple rows - String_Split does not work将列拆分为多行 - String_Split 不起作用
【发布时间】:2020-04-22 07:24:22
【问题描述】:

我有以下代码:

select *
from (
    select aTable.cas_id,  aTable.udv_string
    from bTable, aTable
    where bTable.field_id = '50'
    and bTable.field_id = aTable.field_id
) infotable

这给出了以下输出:

cas_id    udv_string
582       2    4
615       2
276       23
453       2    4
1004      2    4

如您所见,三行有多个以空格分隔的值。我曾尝试使用“split_string”,但这对我不起作用。有人可以帮忙吗?我还搜索并尝试在您的 stackoverflow 网站上应用有关此问题的解决方案,但无济于事。

我希望输出是:

cas_id   udv_string
582      2
582      4
615      2
276      23
453      2
453      4
1004     2
1004     4

【问题讨论】:

  • 今日提示:切换到现代、明确的JOIN 语法。更容易编写(没有错误),更容易阅读(和维护),并且在需要时更容易转换为外连接。
  • STRING_SPLIT()(不是split_string)有什么问题?
  • 添加一个有帮助的示例数据
  • 我的意思是 string_split() 不起作用。对象未被识别

标签: sql sql-server stored-procedures split


【解决方案1】:

如果您使用的是SQL Server 16 +,那么您可以使用string_split()

select a.cas_id, aa.value as udv_string
from aTable a inner join
     bTable b
     on b.field_id = a.field_id cross apply
     string_split(a.udv_string, '  ') aa
where a.field_id = 50;

注意:我使用了标准的显式连接语法,而不是逗号分隔。

对于旧版本,您可以参考this

【讨论】:

  • 感谢 Yogesh 的帮助!对此,我真的非常感激。这花了我几个小时,我无法弄清楚为什么 string_split() 不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-28
相关资源
最近更新 更多