2017-02-02 2 views
0

にデータ型varchar型の変換:SQLクエリ - 私はSQLクエリでの価格設定を変換する問題を持っている数値

CASE CAST(R.Price AS decimal(10,2)) 
    WHEN 'NULL' 
     THEN '0' 
END AS 'PricePoint', 

は残念ながら、それはこのエラーがスローされます。助けを

Error converting data type varchar to numeric.

感謝を。

+0

これはどのRDBMSですか? 'mysql'、' postgresql'、 'sql-server'、' oracle'、 'db2'のどれかを指定するタグを追加してください。 –

+0

これが** SQL Server **の場合、 - NULLの場合は、次のようにチェックを変更する必要があります: 'CAST(...)IS NULL THEN:.....' - まず第一に** 'NULL'の周りに一重引用符を入れないでください。次に' IS NULL'を使う必要があります - あなたは 'NULL'を扱うときに通常の等価チェックを使うことはできません –

+1

解決策を探しているDBMSも提供してくださいPricePoint列からのサンプルデータとして取得します。 –

答えて

0

VarcharとしてNULLを比較しているため、エラーが発生しています。

これはSQL Serverののためであれば、あなたはIS NULLチェック(とない「ノーマル」等価演算子)を使用するには、このコードを使用する必要があります

CASE CAST(R.Price AS decimal(10,2)) WHEN NULL THEN '0'END AS 'PricePoint', 
+0

どちらもうまくいかない...... –

+0

あなたが達成しようとしていることを教えてください。そうすれば、あなたを助けてくれるでしょう。 –

+0

このアプローチを使うと、普通の等価演算子 'CAST(...)= NULL'を使って' CAST(...) '式を' NULL'と比較しますが、 'NULL'は**常に**偽で動作しません –

0

以下のクエリを使用します。

CASE 
    WHEN CAST(R.Price AS decimal(10, 2)) IS NULL 
     THEN '0' 
END AS 'PricePoint', 

の値を0に戻したい場合は、値を一重引用符で囲むことをもう一度忘れてください引用符は、(代わりにintの)文字列値を返している:

CASE 
    WHEN CAST(R.Price AS decimal(10, 2)) IS NULL 
     THEN 0 
END AS 'PricePoint', 

更新:をあなたがNULLではありません何のための定期的な価格を返すようにしたい場合は、あなたのCASEELSE句を追加します。

CASE 
    WHEN CAST(R.Price AS decimal(10, 2)) IS NULL 
     THEN 0 
     ELSE CAST(R.Price AS decimal(10, 2)) 
END AS 'PricePoint', 
+0

しかし、私はクエリの原因を追加すると、他の価格はnullになる たとえば、1、0.5 ...のようなpricePointの他の値は、クエリに追加した後にnullになります。 –

関連する問題