2017-04-05 13 views
1

数値だけを含むvarchar(255)列のサードパーティデータソースがあります。この列はアイテムのコストです。この列に因子(2.3)を掛けてデフォルトの販売価格を得ることができるようにしたいが、varchar列に算術演算子を適用することができず、算術演算子と組み合せて関数CASTがエラーを生成している。SQL Serverの算術演算子をvarcharフィールドで使用する

SELECT 
    AverageCost 
FROM 
    dbo.inventory 
  • 32.5
  • 55.25
  • 8.42
  • 3.33333:

    このステートメントは、次のサンプルの結果を生成します

このsatatement:

SELECT 
    AverageCost * 2.3 AS Price 
FROM 
    dbo.iteminventory 

は小数点がありませんが生成さとしてキャストするために、次のように文を書く

数値データ型を変換し、このエラー

算術オーバーフローエラーを生成しますエラーが発生しましたが、算術演算子をこのステートメントに追加すると、私の試行はできませんでした。すべてエラーになりました。

SELECT 
    CAST(AverageCost AS Decimal(10, 2)) AS Price 
FROM 
    dbo.inventory 

ご協力いただきありがとうございます。

答えて

1

を使用Try_Convert()

Try_Convertは、()は値を表示するにはNULLとして

SELECT try_convert(float,AverageCost) * 2.3 AS Price 
FROM dbo.inventory 

戻り

Price 
388.7 
74.75 
127.075 
19.366 
678.5 
0 
7.666659 

を任意の変換エラーをキャッチします2012+場合変換エラーが発生する可能性があります。

Select * 
From iteminventory 
Where try_convert(float,AverageCost) is null 
+0

ありがとうジョン、それは完璧に働いた。 –

+0

@ B.L。お力になれて、嬉しいです –

関連する問題