SQL Server 中的数据类型隐式转换问题 |
写这篇文章的时候,还真不知道如何取名,也不知道这个该如何将其归类 。这个是同事遇到的一个案例,案例比较复杂,这里抽丝剥茧,仅仅构造一个简单的案例来展现一下这个问题 。我们先构造测试数据,如下所示: CREATE TABLE TEST ( ID INT, GOOD_TYPE VARCHAR(12), GOOD_WEIGHT NUMERIC(18,2) ) INSERT INTO dbo.TEST VALUES( 1, 'T1',1.27) SELECT GOOD_TYPE, CASE WHEN ( GOOD_TYPE = 'T1' ) THEN 99.1 + SUM(GOOD_WEIGHT) ELSE CEILING(SUM(GOOD_WEIGHT)) END AS GrossWeight , SUM(GOOD_WEIGHT) AS NetWeight FROM dbo.TEST GROUP BY GOOD_TYPE; 如上所示,为什么
当两个不同数据类型的表达式用运算符组合后,优先级较低的数据类型首先转换为优先级较高的数据类型 。 如果此转换不是所支持的隐式转换,则返回错误 。 对于组合具有相同数据类型的操作数表达式的运算符时,运算的结果便为该数据类型 而我们知道, 参考资料: https://docs.microsoft.com/zh-cn/sql/t-sql/data-types/data-type-precedence-transact-sql?view=sql-server-2017 https://docs.microsoft.com/zh-cn/sql/t-sql/data-types/data-type-conversion-database-engine?view=sql-server-2017 总结 以上所述是小编给大家介绍的SQL Server 中的数据类型隐式转换问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的 。在此也非常感谢大家对脚本之家网站的支持! |