Dan*_*son 5 sql-server casting
我有一列包含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是否有效?
如果您的字段包含9位数字,则可能是最大值999,999,999.我最初的想法是你的演员应该是CAST (NUMERIC 11, 2)
编辑
为了安全起见,9个字符的长度,你可以有从999,999,999到的数字0.1234567.这意味着您需要小数点前9位数和后7位数(总共16位).所以你的演员应该是CAST (NUMERIC (16,7)
select CAST(field1 as numeric(16,7) from table;
| 归档时间: |
|
| 查看次数: |
76169 次 |
| 最近记录: |