簡體   English   中英

Oracle SQL無效參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM