1

あるテーブルから、列の型が decimal(18,2) である別のテーブルに、お金のように見える文字列値を挿入する必要があります。次のようなコードを試しCAST(REPLACE(REPLACE(d.Cost,',',''),'$','') AS DECIMAL(18,2)) AS 'Cost' ましたが、データ型 varchar を数値に変換する際にエラーが発生します。

4

3 に答える 3

1

試す:

CAST(CAST(REPLACE(REPLACE(d.Cost,',',''),'$','') AS Float) AS DECIMAL(18,2)) AS 'Cost'
于 2013-09-27T02:16:52.110 に答える
1

フォーマットされた値をデータベースに保存することはお勧めできませんが、この問題は簡単に回避できます。

Decimalにキャストできない理由は、現在はVarcharであるためです。したがって、最初にMoneyにキャストしてから、別のものにキャストできます。

これはSqlサーバーで機能します:

select cast(cast('$400,000.88' as money) as decimal(10,2))
于 2013-09-27T13:55:38.780 に答える