2016-12-16 52 views
0

期待以下某種情況時遇到符號「THEN」:* & - +; /在mod餘數rem和或||多集在期待以下某種情況時遇到符號「THEN」

CASE 
     WHEN CLAIMNUMBER = 311754 AND POLICY_NUMBER = 21620 THEN    cast(CLAIMNUMBER as varchar2(10)) + 'M' 
        WHEN CLAIMNUMBER = 317802 AND POLICY_NUMBER = 15571 THEN cast(CLAIMNUMBER as varchar2(10)) + 'M' 
       WHEN CLAIMNUMBER = 318794 AND POLICY_NUMBER = 19325 THEN cast(CLAIMNUMBER as varchar2(10)) + 'M' 
     WHEN CLAIMNUMBER = 319510 AND POLICY_RECORD_ID = '21294_19' THEN cast(CLAIMNUMBER as varchar2(10)) + 'M' 
      ELSE 
       cast(CLAIMNUMBER as varchar(10)) 
      END AS CLAIMNUMBER, 
+1

請檢查'投(CLAIMNUMBER爲VARCHAR2(10))+「M'' 在Oracle PL SQL或SQL,連擊語法是''||而不是'+'。此外,這是更大的SQL查詢的一部分?你能分享完整的查詢嗎? –

+0

另外,請告訴我們'CLAIMNUMBER'的數據類型' –

+0

爲什麼你使用'cast'而不是'to_char'? – Kacper

回答

0

假設CLAIMNUMBER是數字數據類型,對於這個問題的最可能的原因是使用的+作爲連接運算符。而是使用||連接字符串,並且您的查詢應該可以正常工作。優化的查詢應該如下

select CASE 
      WHEN CLAIMNUMBER = 311754 AND POLICY_NUMBER = 21620 THEN cast(CLAIMNUMBER as varchar2(10)) 'M' 
      WHEN CLAIMNUMBER = 317802 AND POLICY_NUMBER = 15571 THEN cast(CLAIMNUMBER as varchar2(10)) || 'M' 
      WHEN CLAIMNUMBER = 318794 AND POLICY_NUMBER = 19325 THEN cast(CLAIMNUMBER as varchar2(10)) || 'M' 
      WHEN CLAIMNUMBER = 319510 AND POLICY_RECORD_ID = '21294_19' THEN cast(CLAIMNUMBER as varchar2(10)) || 'M' 
      ELSE 
        cast(CLAIMNUMBER as varchar2(10)) 
     END AS CLAIMNUMBER1 
+0

解決了。謝謝你們。 – Shum

相關問題