将double转换为数字 - Sybase

时间:2012-08-29 09:28:57

标签: sybase-ase

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

1 个答案:

答案 0 :(得分:1)

解决方案(如OP所述)

update Table set PriceNetto = CONVERT( numeric(19,2), str_replace(str(PriceNettoTmp,19,2),',','.'))