六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 1097|回复: 0

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

[复制链接]

升级  20%

2

主题

2

主题

2

主题

童生

Rank: 1

积分
10
 楼主| 发表于 2013-1-29 16:30:52 | 显示全部楼层 |阅读模式
无聊研究了一下这个问题
首先定义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语句 尽量往标准里写
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表