2017-12-02 6 views
0

私たちは、私はインパラSQLへのOracle SQLで書かれている次のクエリをひそかにしようとしています、オラクルからのHadoopに移行されます。Oracleのインパラにクエリの変換

CASE WHEN UPPER(table1.ACC_NBR) = LOWER(table1.ACC_NBR) THEN SUBSTR(table1.ACC_NBR,5,1)||'-'||SUBSTR(table1.ACC_NBR,8,2)||'-'|| SUBSTR(table1.ACC_NBR,10,3)||'-'||SUBSTR(table1.ACC_NBR,13,6) ELSE SUBSTR(table1.ACC_NBR,5,1)||'-'||SUBSTR(table1.ACC_NBR,6,2)||'-' || SUBSTR(table1.ACC_NBR,10,2)||'-'||SUBSTR(table1.ACC_NBR,13,6) END

私はビジネスでこのクエリを使用していますオブジェクトユニバース設計ツールとそれは私にエラーを与える

SUBSTR(table1.ACC_NBR、5,1)または|| ' - ' ||ブール期待文字列です。

です。誰かがクエリを見て、欠けているものや余分なものを見ることができます。

ありがとうございました。

答えて

0

||は、インパラの連結演算子として認識されません。代わりにCONCAT関数を使用してください。

CASE 
    WHEN 
     UPPER(table1.ACC_NBR) = LOWER(table1.ACC_NBR) 
    THEN 
     CONCAT (SUBSTR(table1.ACC_NBR, 5, 1), '-', SUBSTR(table1.ACC_NBR, 8, 2), '-', 
       SUBSTR(table1.ACC_NBR, 10, 3), '-', SUBSTR(table1.ACC_NBR, 13, 6)) 
    ELSE 
     CONCAT (SUBSTR(table1.ACC_NBR, 5, 1), '-', SUBSTR(table1.ACC_NBR, 6, 2), '-' , 
       SUBSTR(table1.ACC_NBR, 10, 2), '-', SUBSTR(table1.ACC_NBR, 13, 6)) 
END 
関連する問題