我有一个双精度类型的列,我想将此列中的值复制到另一个类型为numeric(19,2)的列。
当我执行select CONVERT( numeric(19,2), PriceNettoTmp) from Table
时它会起作用,但当我update Table set PriceNetto = CONVERT( numeric(19,2), PriceNettoTmp)
时却没有。{/ p>
在Squirrel SQL中执行时update
的错误消息:
写入列-1Data时发生数据截断错误为-1 转移了字节长和-1个字节。
在Sybase Central中执行时update
的错误消息:
无法执行语句。显式期间的算术溢出 将FLOAT NULL值'10,449999999999999.0'转换为NUMERIC 场。 Sybase错误代码= 247严重级别= 16,状态= 1,事务 State = 0 Line 1
有人知道什么是错的吗?
修改
我找到了一个有效的解决方案:update Table set PriceNetto = CONVERT( numeric(19,2), str_replace(str(PriceNettoTmp,19,2),',','.'))
虽然我仍然不明白为什么select
正在工作而update
没有工作。还有比我更简单的解决方案吗?
答案 0 :(得分:1)
解决方案(如OP所述)
update Table set PriceNetto = CONVERT( numeric(19,2), str_replace(str(PriceNettoTmp,19,2),',','.'))