Haz*_*Haz 0 sql t-sql sql-server numeric type-conversion
尝试进行此转换时,出现“算术溢出”错误:
select convert(numeric(10, 4), '4236575.320000000000000000')
Run Code Online (Sandbox Code Playgroud)
但是可以使用以下命令将其转换为不带小数的数字:
select convert(numeric, '4236575.320000000000000000')
Run Code Online (Sandbox Code Playgroud)
这是什么原因呢?
该值4236575.320000000000000000的数据类型为,NUMERIC(25, 18)因为您在小数点前有7位数字,在小数点后有18位数字。
话虽如此,只要可以存储小数点前的部分而不会截断,则可以使用较小的精度和小数位数:
SELECT str
, CONVERT(NUMERIC(8, 1), str) AS [ddddddd.d]
, CONVERT(NUMERIC(7, 0), str) AS [ddddddd]
, CONVERT(NUMERIC(9, 2), str) AS [ddddddd.dd]
FROM (VALUES
('4236575.320000000000000000')
) AS tests(str)
Run Code Online (Sandbox Code Playgroud)
结果:
str | ddddddd.d | ddddddd | ddddddd.dd
4236575.320000000000000000 | 4236575.3 | 4236575 | 4236575.32
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |