挫骨扬灰 发表于 2013-1-29 16:30:52

sql server varchar 值 的转换溢出了int列

无聊研究了一下这个问题
首先定义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语句 尽量往标准里写
页: [1]
查看完整版本: sql server varchar 值 的转换溢出了int列