2

我有一个双精度类型的列,我想将此列中的值复制到另一个类型为 numeric(19,2) 的列。

当我这样做select CONVERT( numeric(19,2), PriceNettoTmp) from Table时,它会起作用,但当我这样做时,update Table set PriceNetto = CONVERT( numeric(19,2), PriceNettoTmp)它不会。

update在 Squirrel SQL 中执行时的错误消息:

写入列 -1Data 时发生数据截断错误,长度为 -1 个字节,传输了 -1 个字节。

update在 Sybase Central 中执行时的错误消息:

无法执行语句。将 FLOAT NULL 值 '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 回答