【问题标题】:Is there an equivalent to concat_ws in oracle?oracle中是否有与concat_ws等价的东西?
【发布时间】:2020-07-21 00:09:27
【问题描述】:

我有很多列要聚合在一起,其中大多数都有 NULL 值。我想用 ';' 分隔确实出现的值但我找不到在 oracle 中执行此操作的有效方法。 CONCAT_WS 正是我需要的,因为它不会在 NULL 值之间添加分隔符,但 oracle 不支持这一点。

concat_ws(';','dx89','dx90','dx91','dx92') as diagnoses3

ORA-00904: "CONCAT_WS": invalid identifier

使用这样的函数是相似的,但并不能完全满足我的需要,因为您可以看到“;”在字符串的末尾,因为 dx91 和 dx92 是 NULL 值:

dx89||';'||dx90||';'||dx91||';'||dx92 as diagnoses2

I63.8;I63.9;;

任何帮助将不胜感激!

【问题讨论】:

    标签: sql oracle concatenation


    【解决方案1】:

    您可以将特定于 Oracle DB 的 nvl2() 函数与管道连接运算符一起使用:

    select dx89||nvl2(dx90,';'||dx90,dx90)||nvl2(dx91,';'||dx91,dx91)
      from tab
    

    【讨论】:

      猜你喜欢
      • 2018-01-07
      • 2022-01-10
      • 2018-05-26
      • 2014-10-14
      • 2012-12-30
      • 1970-01-01
      • 2021-09-17
      • 2018-06-01
      • 2011-11-16
      相关资源
      最近更新 更多