2

倍精度型の列があり、この列からnumeric(19,2)型の別の列に値をコピーしたいと思います。

私がselect CONVERT( numeric(19,2), PriceNettoTmp) from Tableするときそれは働きますが、私がするときupdate Table set PriceNetto = CONVERT( numeric(19,2), PriceNettoTmp)それはしません。

updateSquirrel SQLで実行する場合のエラーメッセージ:

列-1の書き込みでデータ切り捨てエラーが発生しました。データの長さは-1バイトで、-1バイトが転送されました。

updateSybase Centralで実行する場合のエラーメッセージ:

ステートメントを実行できませんでした。FLOATNULL値「10,449999999999999.0」をNUMERICフィールドに明示的に変換する際の算術オーバーフロー。Sybaseエラーコード=247重大度=16、状態= 1、トランザクション状態=0行1

誰が何が間違っているのか知っていますか?


編集

私はうまくいく解決策を見つけました:update Table set PriceNetto = CONVERT( numeric(19,2), str_replace(str(PriceNettoTmp,19,2),',','.'))

selectなぜ機能していたのか、機能しなかったのかはまだわかりませupdateんが。そして、私よりも簡単な解決策はありますか?

4

1 に答える 1

1

解決策(OPによる)

update Table set PriceNetto = CONVERT( numeric(19,2), str_replace(str(PriceNettoTmp,19,2),',','.'))
于 2012-08-30T08:45:55.977 に答える