這個問題在這里已經有了答案: Concat 函式不起作用 - 引數數量無效 4 個答案 13 小時前關閉。
我正在使用查詢來選擇表的所有列并用逗號(',')分隔它們,但如果列的值為 null,那么我將使用字串 'null' 代替值。
我正在嘗試的查詢是 -
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 中,我也必須手動撰寫所有列。
uj5u.com熱心網友回復:
Oracle 的 CONCAT 函式只接受 2 個引數。
但是有 concat 運算子,||它可以滿足您的要求:
SELECT NVL(ID,'null') || ',' || NVL(NAME,'null') || ',' || NVL(ROLL_NO,'null')
FROM DUAL
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/491580.html
標籤:sql 甲骨文 阿帕奇火花 apache-spark-sql
上一篇:SQLServer在最后一行插入
下一篇:欄位不等于來自不同列的任何值
