2017-10-17 4 views
1

私は以下のSQLコードとステートメントが常に '数値データ型varcharを数値に変換する'エラーを返す場合があります。しかし、私がそれをコメントアウトすると、同じコードが最初の列で使用されても、文は正常に実行されます。CASE WHENが使用されている場合にのみエラーを返すSQLクエリ

SELECT CAST(DATA1 AS DECIMAL(10,5)), AMOUNT, CASE WHEN NAME ='A' THEN CAST(DATA1 AS DECIMAL(10,5)) ELSE '0' END FROM TEST 

上記のように実行すると失敗します。私がケースをコメントアウトした場合、それは正常に実行されます。ありがとう!

答えて

1

2つの異なるデータ型を同じ列に表示するように指示しています。試してみる。

SELECT CAST(DATA1 AS DECIMAL(10,5)), AMOUNT, 
CASE 
    WHEN NAME LIKE 'A' THEN CAST(DATA1 AS DECIMAL(10,5)) 
    ELSE CAST(0.0 AS DECIMAL(10,5)) END FROM TEST 
2

CASE文は、DECIMAL(10,5)とvarcharという2つの異なる型を返そうとしています。

1つのタイプを返す必要があるため、 '0'を使用する代わりに0.0を使用します。

関連する問題