[英]Oracle SQL invalid argument
我嘗試向此語句添加另一個MAX(DECODE(SPØRGSMÅL_ID, 101, KARAKTER))
,但是給了我無效的參數? 問題是什么?
這有效並且是原始查詢
MAX(DECODE(SPØRGSMÅL_ID, 47, KARAKTER)) AS SP1,
to_number(concat(concat(MAX(DECODE(SPØRGSMÅL_ID, 141, KARAKTER)),
MAX(DECODE(SPØRGSMÅL_ID, 161, KARAKTER))),MAX(DECODE(SPØRGSMÅL_ID, 121, KARAKTER)))) AS SP2
這不起作用,給我一個無效的參數錯誤
MAX(DECODE(SPØRGSMÅL_ID, 47, KARAKTER)) AS SP1,
to_number(concat(concat(MAX(DECODE(SPØRGSMÅL_ID, 141, KARAKTER)),
MAX(DECODE(SPØRGSMÅL_ID, 161, KARAKTER))),
MAX(DECODE(SPØRGSMÅL_ID, 121, KARAKTER))), MAX(DECODE(SPØRGSMÅL_ID, 101, KARAKTER)) AS SP2
這是因為您添加了MAX(DECODE(SPØRGSMÅL_ID, 101, KARAKTER))
作為TO_NUMBER的第二個參數。
更改之前您的SP2列定義如下:
to_number(
concat(
concat(
MAX( DECODE(SPØRGSMÅL_ID, 141, KARAKTER) ),
MAX( DECODE(SPØRGSMÅL_ID, 161, KARAKTER) )
),
MAX( DECODE(SPØRGSMÅL_ID, 121, KARAKTER) )
)
) AS SP2
如果要CONCAT
其他字符,則必須添加第三個CONCAT
執行,例如:
to_number(
concat(
concat(
concat(
MAX( DECODE(SPØRGSMÅL_ID, 141, KARAKTER) ),
MAX( DECODE(SPØRGSMÅL_ID, 161, KARAKTER) )
),
MAX( DECODE(SPØRGSMÅL_ID, 121, KARAKTER) )
),
MAX( DECODE(SPØRGSMÅL_ID, 101, KARAKTER) )
)
) AS SP2
正如您已經注意到的,您已經錯過了concat()
調用,但是嵌套它們仍然很尷尬,而且容易出錯。
使用串聯運算符更簡單:
MAX(DECODE(SPØRGSMÅL_ID, 47, KARAKTER)) AS SP1,
to_number(
MAX(DECODE(SPØRGSMÅL_ID, 141, KARAKTER))
|| MAX(DECODE(SPØRGSMÅL_ID, 161, KARAKTER))
|| MAX(DECODE(SPØRGSMÅL_ID, 121, KARAKTER))
|| MAX(DECODE(SPØRGSMÅL_ID, 101, KARAKTER))
) AS SP2
將值連接到一個字符串中,然后將其傳遞給to_number()
看起來有點奇怪,但是如果沒有看到示例數據,就很難說這對您對結果所做的一切是否有意義。 列名稱KARAKTER
建議您可能要建立一個字母字符串,而不是數字,或者至少是不是所有數字,這會引發“ ORA-01722:無效數字”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.