2017-09-16 17 views
0

I重みを計算するために、次のコードを持っている、私はそれを実行すると、私は算術オーバーフローエラー変換式データ型のnvarchar

算術オーバーフローエラー変換式データ型のnvarchar

UPDATE T1 
SET [1 WO # WGHT] = CASE 
         WHEN t2.[WEIGHT] = 'NMI' THEN 0 
         WHEN t2.[WEIGHT] = '' THEN 0 
         WHEN t2.[WEIGHT] IS NULL THEN 0 
         ELSE CAST(t2.[WEIGHT] AS float) 
        END 
FROM [PACKING SLIPS] T1 
INNER JOIN inserted i ON T1.[AUTO PACK SLIP #] = i.[AUTO PACK SLIP #] 
CROSS APPLY 
    (SELECT TOP 1 * 
    FROM [WORKORDERS] T2 
    WHERE T1.[1. WO #] = T2.[WORK ORDER NO.]) T2 
+2

[エラーが発生し、データ型nvarcharをfloatに変換できません](https://stackoverflow.com/questions/26765604/error-unable-to-convert-data-type-nvarchar-to-float) – Tanner

+0

関係するすべてのテーブルの定義ですか? –

答えて

0

を得ますCASE式を次のように置き換えます。

ISNULL(TRY_CAST(t2.WEIGHT AS FLOAT), 0) 

あなたは、SQL Serverの(2008R2およびそれ以前)の古いバージョンを使用している場合は、以下のようにうまくいく...

CAST(CASE WHEN t2.WEIGHT NOT LIKE '%[^0-9.]%' THEN t2.WEIGHT ELSE '0' END AS FLOAT) 

サイドノート...あなたは今までFLOATまたはREALのいずれかを使用しないでくださいデータ型を金額に変換します。 MOMEYまたはSMALLMONEYを使用しない場合は、DECIMALまたはNUMERICの使用を検討してください。

+0

TRY_CASTが認識されません。 – user8066749

+0

どのSQL Serverのバージョンを使用していますか? –

+0

@ user8066749 - SQL Serverの古いバージョンのコードを追加しました。また、FLOATデータ型に関するコメントも参照してください。 –

関連する問題