我有一个双精度类型的列,我想将此列中的值复制到另一个类型为 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
不是。还有比我更简单的解决方案吗?