我有一列包含9位数字值的数据,但该列被定义为varchar.我需要将字段CAST为数值,这样我就可以将列的总和除以100
select CAST(field1 as numeric(9,2)) / 100 from table;
Run Code Online (Sandbox Code Playgroud)
运行查询时出现以下错误:将varchar转换为数据类型numeric的算术溢出错误.
如果我从varchar - > int - > numeric执行双CAST,则CAST可以正常工作.例如
select CAST(CAST(field1 as int) as numeric(9,2)) / 100 from table;
Run Code Online (Sandbox Code Playgroud)
有没有理由为什么来自varchar的单个CAST - > numeric会导致SQL错误,但双CAST是否有效?