将截断字符串或二进制数据 问题,在线等

来源:百度知道 编辑:UC知道 时间:2024/05/10 14:12:29
我写一个insert语句,提示"将截断字符串或二进制数据",我查了一下以为是长度问题,我就把那个字段的[varchar]调大(类型也对的,其它字段也没有问题),但是还是出现这个提示,还有什么方面可能引起这个问题呢?
拜托帮帮我,谢谢~
我刚发现有个触发器,把代码贴出来,大家帮看这里有没有问题.(要插入的字不超过varchar(20))
CREATE TRIGGER dbo.T_ZXSMS_Utg ON dbo.T_ZXSMS
FOR insert
AS
if (@@rowcount>0)
begin
declare @CALLERID varchar(20),
@CALLEDID varchar(20),
@MEM varchar(200),
@TIM varchar(20)

declare update_cursor scroll cursor for select CALLERID,CALLEDID,MEM,TIM from

inserted
open update_cursor
FETCH first FROM update_cursor into @CALLERID,@CALLEDID,@MEM,@TIM
WHILE @@FETCH_STATUS = 0
begin

if (left(@CALLERID,1)<>'8' )
begin
insert into T_ZXSMS_Bak(CALLERID ,CALLEDID,MEM,TIM)

values(@CALLERID ,@CALLEDID,@MEM,@TIM)

end

没有了,只有加长或加大字段.
你可以求一下要插入的字符类变量的长度.
或直接将要插入的查询用下列语句直接建立一个临时表,检查临时表与原表的差异.
SELECT INSERTFIELD1,INSERTFIELD2 ... INTO 临时表 from xxxx

SELECT @INSERTvar1,@INSERTvar2 ... INTO 临时表
如果自动生成字段的数据容量大于原表数据容量,再对该字段进行重点检查即可

额,因为没有看到你的代码,所以不知道怎么分析。
一般将截断字符串或二进制数据错误是指你所INSERT的内容超过了你先前定的大小。

所以我估计:
1.你是否values 后面添加的值和你的列一一对应,麻烦你仔细检查下。
2.检查下你的字符型是否加了'',是否超过了最大范围...

字符长度不够,可以用len看一下你插入的字符串的长度,然后再调整数据类型!