为什么 nvl 在 oracle 的 concat 函数中不起作用?

普拉提克·高塔姆

我正在使用查询来选择表的所有列并用逗号(',')分隔它们,但如果列的值为空,那么我将使用字符串“空”代替值。

我正在尝试的查询是 -

SELECT CONCAT(NVL(ID,'null'),',',NVL(NAME,'null'),',',NVL(ROLL_NO,'null')) 
FROM DUAL
Expected result-
1,john,123
2,josh,null

我打算在 spark 临时表上运行此查询。但在此之前,我尝试在 sql developer 上运行它。但我得到 ORA-00909 : invalid number of arguments 错误。我在这里找不到哪里出错了。

额外问题(不必回答):有没有办法通过不手动编写列来连接所有列?我知道在 spark.sql 和 oracle 中有一个函数 concat_ws,我们可以在其中使用分隔符,但它也忽略了 null 值,而不是用“null”字符串替换它们,但即使在 concat_ws 中,我也必须手动编写所有列。

戈尔兹特罗

Oracle 的 CONCAT 函数只接受 2 个参数。

但是有 concat 运算符 , 可以满足||您的要求:

SELECT NVL(ID,'null') || ',' || NVL(NAME,'null') || ',' || NVL(ROLL_NO,'null') 
FROM DUAL

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章