我有大量的列试图聚合在一起,其中大多数都有 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;;
任何帮助将不胜感激!
您可以使用NVL2() https://docs.oracle.com/cd/B28359_01/olap.111/b28126/dml_functions_2049.htmOracle DB 特定的函数以及管道连接运算符:
SELECT TRIM(LEADING ';'
FROM dx89||NVL2(dx90,';'||dx90,dx90)||
NVL2(dx91,';'||dx91,dx91)||
NVL2(dx92,';'||dx92,dx92)) AS "Concatenated String"
FROM t
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)