这里有一个小问题。 我正在定期对MySQL表中的货币进行自动更新。生成的查询的 部分是:MySQL查询中的奇怪返回
UPDATE ara_curr SET
curr_xchange=REPLACE(CONVERT(CONVERT('1.60739',DECIMAL(9,5))/CONVERT('10000',DECIMAL(9,5)),DECIMAL(9,5)),'.',','),
curr_rev_xchange=REPLACE(CONVERT('6221.27',DECIMAL(9,5)),'.',',')
WHERE curr_name='IDR';
我从在线服务获取值。然而这个查询返回
Out of range value for column (null) at row 1
但是如果我打破它的转换返回这些
REPLACE(CONVERT('6221.27',DECIMAL(9,5)),'.',',') = 6221,27000
CONVERT('1.60739',DECIMAL(9,5)) = 1,60739
CONVERT('10000',DECIMAL(9,5)) = 9999,99999
CONVERT(CONVERT('1.60739',DECIMAL(9,5))/CONVERT('10000',DECIMAL(9,5)),DECIMAL(9,5)) = 0,00016
如果我尝试直接使用这些值如运行查询
UPDATE ara_curr SET curr_xchange='0,00016', curr_rev_xchange='6221,27000' WHERE curr_name='IDR';
它运行完美OK!
对此的任何想法?
那么curr_xchange和curr_rev_xchange是VARCHAR。 但铸造不起作用。 我不确定他们为什么没有设置为DECIMAL,但没有什么大不了的。 – nnikolov06 2012-04-04 07:59:59