2016-04-14 6 views
0

私は、顧客請求書に基づいてお金を払っている16,000行以上のテーブルを持っています。残念ながら、支払うべき金額は奇妙な方法で設定された - 金額はvarchar型として格納されているとお金が原因である任意の時間のために、マイナス記号は、このような数の右側にある:私が持っている不規則なVarcharを数値に変換する

Amount 
36.30 
21.48- 
132.65- 
87.91- 
1.20 

私のテーブルに新しい列がAmount_numと呼ばれる追加し、私は私に次のようになります私のテーブルに更新を行いたいと思います:

Amount Amount_num 
36.30  36.30 
21.48-  -21.48 
132.65-  -132.65 
87.91-  -87.91 
1.20  1.20 

私は、次の更新クエリを試してみました:

UPDATE [CHARGE_TABLE] 
SET [Amount_num] = CAST ([Amount] as decimal (18,2)) 

これは、 'データ型varcharを数値に変換中にエラーが発生しました。私は何を変えるべきですか?

答えて

1

これは、あなたの奇妙な文字列形式で動作するはずです。

UPDATE [CHARGE_TABLE] 
SET [Amount_num] = convert(numeric(18,2), Case when Amount like '%-' then '-' else '' end + REPLACE(Amount, '-', '')) 
+0

ここに示す問題を修正する必要がありますが、データにはこの形式と通常の数値がすべて一致しない問題がOPで発生する可能性があります。しばしばvarcharが使用されるべきときに使用されると、ジャンクが格納されます。私はこれだけを言うので、まだ動作しない場合、OPは答えを拒否しません。 – HLGEM

+0

これは実際に働いた!幸いなことに、データはそれまでと同じように乱雑ではありませんでした。単語や他のシンボルは属していませんでした。お手数をおかけしていただきありがとうございます – mdarr

関連する問題