问题:插入bit类型报错。
实现功能,查询一个表内容插入另外一张表。
语句如下:
insert into UFDATA_333_2012.dbo.fitemss01class(cItemCcode,cItemCname,bItemCend,iItemCgrade)
select f1.cItemcode,f1.cItemname,1,1 from UFDATA_222_2012.dbo.fitemss00 f1 where
f1.cItemcode not in (select cItemCcode from UFDATA_333_2012.dbo.fitemss01)
其中iItemCgrade为bit类型,直接插入是没有问题的。但是查询结果插入就报错。
如果按上面的sql语句执行会报:
将截断字符串或二进制数据。
语句已终止。
如果将1改为'true'会报
将 varchar 值 'true' 转换为数据类型为 tinyint 的列时发生语法错误。
同样将1改为convert(bit,1)会报
将截断字符串或二进制数据。
语句已终止。
6 个解决方案
#1
木有人么?求助。。。
就卡在这了。。。
对了,忘记说了,数据库是2000
就卡在这了。。。
对了,忘记说了,数据库是2000
#2
select f1.cItemcode,f1.cItemname 这两个字段中 有超长的数据 导致的。
#3
bit 类型的数据,里面只可以是1,0,NULL,还有看看数据长度有没有超
#4
神了,真有一个字段大小是20的哈。好厉害。不过我改了之后还是这样。
#5
你给的例子说明肯定不是bit类型的问题,像ls说的,应该是
f1.cItemcode,f1.cItemname这两个字段的长度引发的
f1.cItemcode,f1.cItemname这两个字段的长度引发的
#6
insert into UFDATA_333_2012.dbo.fitemss01class(cItemCcode,cItemCname,iItemCgrade,bItemCend)
select f1.cItemcode,f1.cItemname,1,1 as z from UFDATA_222_2012.dbo.fitemss00 f1 where
f1.cItemcode not in (select cItemCcode from UFDATA_333_2012.dbo.fitemss01)
这样又可以了、。
谢谢大家的回答,经您的提醒后我突然间发现了,我把问题和bit绑定了,只要报错我就认为是bit类型转换的问题。没有细细查看sqlServer提示的错误信息。
最后,再次谢谢大家的回答。祝大家生活愉快,事业顺心!
#1
木有人么?求助。。。
就卡在这了。。。
对了,忘记说了,数据库是2000
就卡在这了。。。
对了,忘记说了,数据库是2000
#2
select f1.cItemcode,f1.cItemname 这两个字段中 有超长的数据 导致的。
#3
bit 类型的数据,里面只可以是1,0,NULL,还有看看数据长度有没有超
#4
神了,真有一个字段大小是20的哈。好厉害。不过我改了之后还是这样。
#5
你给的例子说明肯定不是bit类型的问题,像ls说的,应该是
f1.cItemcode,f1.cItemname这两个字段的长度引发的
f1.cItemcode,f1.cItemname这两个字段的长度引发的
#6
insert into UFDATA_333_2012.dbo.fitemss01class(cItemCcode,cItemCname,iItemCgrade,bItemCend)
select f1.cItemcode,f1.cItemname,1,1 as z from UFDATA_222_2012.dbo.fitemss00 f1 where
f1.cItemcode not in (select cItemCcode from UFDATA_333_2012.dbo.fitemss01)
这样又可以了、。
谢谢大家的回答,经您的提醒后我突然间发现了,我把问题和bit绑定了,只要报错我就认为是bit类型转换的问题。没有细细查看sqlServer提示的错误信息。
最后,再次谢谢大家的回答。祝大家生活愉快,事业顺心!