此表达式使用隐式转换:
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')
我得到:
- 基本类型数字
- 精度9
- 等级6
- 最大长度5
我相信我理解除了精度之外的所有结果。如果小数点左边的位数是 2,右边是 6,则总计 8。
为什么 SQL Server 在这里计算 9?
PS 我使用 SQL Server 2008 R2