注册 登录
编程论坛 SQL Server论坛

新手急问,为什么SQL语句不能执行?

caohua 发布于 2006-11-29 11:03, 979 次点击
insert into ClassInfo values('20050102','2005级计算机科学与技术02班',' 0152361');
执行上面的命令以后会出现下面的错误提示,请问是什么意思?

服务器: 消息 8152,级别 16,状态 9,行 1
将截断字符串或二进制数据。
语句已终止。

ClassInfo表有3列: class_id varchar 10
class_name varchar 50
teacher_id varchar 7

但是在表中直接添加这条记录是可以的,用语句执行就出错,请问是怎么回事?
10 回复
#2
棉花糖ONE2006-11-29 11:25
'2005级计算机科学与技术02班',这个的长度超过你定义的长度了
#3
caohua2006-11-29 11:34
截短了还是不行啊,但是直接在表中插入就可以。
#4
雨之神2006-11-29 12:40
('20050102','2005级计算机科学与技术02班',' 0152361');

这三个里,肯定有一个超长了,认真检查每一个.
#5
caohua2006-11-29 18:51
哎呀,还是不行啊,真是郁闷死了!!!
#6
caohua2006-11-29 20:19

但是直接向表中添加这个记录是可以的啊!!!

#7
bygg2006-11-29 20:25
以下是引用caohua在2006-11-29 11:03:04的发言:
insert into ClassInfo values('20050102','2005级计算机科学与技术02班',' 0152361');
执行上面的命令以后会出现下面的错误提示,请问是什么意思?

服务器: 消息 8152,级别 16,状态 9,行 1
将截断字符串或二进制数据。
语句已终止。

ClassInfo表有3列: class_id varchar 10
class_name varchar 50
teacher_id varchar 7

但是在表中直接添加这条记录是可以的,用语句执行就出错,请问是怎么回事?

你的 0152361 这个参数里面是不是多了个空格(0的前面)
??

#8
caohua2006-12-01 11:50
这不是一个空格,就是一个字符啊,代表的是教师编号
#9
bygg2006-12-01 11:59

我知道你的 0152361 是老师的编号,只是说这个参数前面多了个空格(0的前面)
不是:insert into ClassInfo values('20050102','2005级计算机科学与技术02班',' 0152361');
而是:insert into ClassInfo values('20050102','2005级计算机科学与技术02班','0152361');
你看看红色的地方有什么区别.

#10
周星2006-12-03 12:52
我按楼主的数据建了一个表,可以用语句插入该列。数据长度没有错误。
在'0152361'前加了一个空格就出现了:
服务器: 消息 8152,级别 16,状态 9,行 1
将截断字符串或二进制数据。
语句已终止。
#11
yunshu2006-12-04 16:34

我晕 你在 teacher_id varchar 7 中定义的teacher_id 字段是 varchar 7 个字符,但是你在第一个输入里面却是' 0152361' 这里多了一个空格!空格也算一个字符!!!!!

1