无聊研究了一下这个问题
首先定义code是varchar型字段。
正规写法是给varchar后的数值加上引号:where code = '001002';
在oracle中 可以直接把 001002 当成字符来用 code = 001002 不会报错;
而在sql server中 有时候 这样写 code = 001002 也不报错;
而有时候就会报 varchar 值 ... ... 转换溢出了int列
为什么有的就不报错呢?经过测试 找到原因:
在sql server 中 当查询的目标表中 所有的code字段的length不大于 where条件后的 001002 的length时,查询是不报错的;
如:
001001;
001010;
00200;
当有code 的length比001002的length大时,查询就会报错;
如:
0010020;
希望大家以后写sql语句 尽量往标准里写