写这篇文章的时候,还真不知道如何取的名,也不知道这个该如何将其归类。这个是同事遇到的一个案例,案例比较复杂,这里抽丝剥茧,仅仅构造一个简单的案例来展现一下这个问题。我们先构造测试数据,如下所示:
创建表的测试 ( ID INT, GOOD_TYPE VARCHAR (12), GOOD_WEIGHT数字(18日2) ) 插入dbo.TEST 值(1,T1, 1.27) 选择GOOD_TYPE, 情况(GOOD_TYPE=T1)然后99.1 + (GOOD_WEIGHT)和 其他的上限(SUM (GOOD_WEIGHT)) 作为工具, (GOOD_WEIGHT)作为NetWeight求和 从dbo.TEST GROUP BY GOOD_TYPE;
如上所示,为什么<代码> 99.1 + (GOOD_WEIGHT)和代码>变成100了呢?原始SQL非常复杂,我们分析,排除掉各个因素后,始终不得要领,各种折腾中发现,如果这样转换一下(请见下面截的图),居然就好了,后面分析了一下,应该是时候里面的不同数据类型导致隐式转换,说实话之前还真没有留意情况中存在数据类型的隐性转换,但是为什么就一定从数字转换为INT了呢?而不是INT隐性转换为数字呢,说实话没有看到相关文档的官方,如果按照官方文档: