我有一列数据,包含9位数字值,但该列被定义为varchar类型。我需要将该字段转换为数字值,以便我可以将该列的总和除以100。例如:
select CAST(field1 as numeric(9,2)) / 100 from table;
运行查询时,我遇到了以下错误:算术溢出错误将varchar转换为数字数据类型。
如果我对varchar进行双重CAST操作——> int -> numeric,那么CAST就会起作用。例如:
select CAST(CAST(field1 as int) as numeric(9,2)) / 100 from table;
单个CAST从varchar转换为numeric导致SQL错误,但双重CAST却能成功,这是否有原因?
field1
的数值是多少? NUMERIC(9,2) 在小数点前只有7位数字 - 因此任何大于1000万的数都会导致数字溢出... - marc_s