将截断字符串或二进制数据。语句已终止
可能对于高手来说这是个不是问题的问题,今天我写出解决这个问题的步骤,相信对于像我一样的菜鸟来说可以从中得出分析问题的方法。
今天公司需要把大量的数据从一个表的某些字段导入到另一个表,这么简单的问题,我就用已经熟练的
insert into org_base(org_name) (select org_name from contract),
结果系统提示:服务器: 消息 8152,级别 16,状态 9,行 1
将截断字符串或二进制数据。
语句已终止。
奇怪了,什么原因呢,语法不错呀,再试一次语法,选取前100行
insert into org_base(org_name) (select top 100 org_name from contract),
系统提示:已影响行数100
明显的语法是正确的,是微软支持不到这么多数据(当时确实这么想了),不会吧,才3000多行的数据,
再试一次,insert into org_base(org_name) (select top 500 org_name from contract),
同样的错误又出现了,可见不是微软支持问题,可能是数据有什么问题吧,于是
select top 500 org_name from contract
好家伙,一个企业的名字是:
扬州四力体育用品有限公司/(上海四威实业公司江都文体分公司)(原:扬州四力体育用品厂/(上海四威实业公司江都文体分公司))
我设计新表时以为100个char已经够企业名字用的了, 这是什么企业名呀,肯定是这里的问题了,
把org_base字段的org_name改为200个char,然后 insert into org_base(org_name) (select org_name from contract),系统提示:
(所影响的行数为 3093 行)
成功,但是回过头来看,原来的提示“将截断字符串或二进制数据”,呵呵说的就是字符过长呀,哎.......