繁体   English   中英

oracle 中是否有等价于 concat_ws?

[英]Is there an equivalent to concat_ws in oracle?

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

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

ORA-00904: "CONCAT_WS": invalid identifier

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

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

I63.8;I63.9;;

任何帮助将不胜感激!

您可以将特定于 Oracle DB 的NVL2() function 与 pipe 连接运算符一起使用:

SELECT TRIM(LEADING ';' 
               FROM dx89||NVL2(dx90,';'||dx90,dx90)||
                          NVL2(dx91,';'||dx91,dx91)||
                          NVL2(dx92,';'||dx92,dx92)) AS "Concatenated String"
  FROM t

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM