【发布时间】:2013-07-17 02:58:05
【问题描述】:
此表达式使用隐式转换:
SELECT 9.999 * '9.999'
并计算 99.980001。
如果我使用这个记录类型信息:
SELECT
SQL_VARIANT_PROPERTY(9.999 * '9.999', 'BaseType'),
SQL_VARIANT_PROPERTY(9.999 * '9.999', 'Precision'),
SQL_VARIANT_PROPERTY(9.999 * '9.999', 'Scale'),
SQL_VARIANT_PROPERTY(9.999 * '9.999', 'MaxLength')
我明白了:
- BaseType 数字
- 精度9
- 比例6
- 最大长度 5
我相信我理解除了精度之外的所有结果。 如果小数点左边的位数是2,右边是6,那么总共是8。
为什么 SQL Server 在这里计算 9?
附:我使用 SQL Server 2008 R2
【问题讨论】:
标签: sql-server type-conversion decimal