背景:
insert into aaqx(XM,XMPY,XBM,XB,MZM,MZ,ZZMMM,ZZMM,CSRQ,ZJLXM,ZJLX,ZJHM,XWSYDWM,XWSYDW,XZXM,ZXXM,PYDWM,PYDW,XWLBM,XWLB,ZYDM,ZYMC,ZSZYMC,KSH,RXNY,XH,XZ,BYNY,HXWRQ,SFDEXW,SFFXXW,XWZSBH,ZP,BZ) 
select XM,XMPY,XBM,XB,MZM,MZ,ZZMMM,ZZMM,CSRQ,ZJLXM,ZJLX,ZJHM,XWSYDWM,XWSYDW,XZXM,ZXXM,PYDWM,PYDW,XWLBM,XWLB,ZYDM,ZYMC,ZSZYMC,KSH,RXNY,XH,XZ,BYNY,HXWRQ,SFDEXW,SFFXXW,XWZSBH,ZP,BZ from aasbxw运行时出现如下错误:服务器: 消息 8152,级别 16,状态 6,行 13
将截断字符串或二进制数据。
语句已终止。问题:估计是被插入数据表的字段长度不够,怎样知道是哪个字段长度不够啊?

解决方案 »

  1.   

    将截断字符串或二进制数据。语句已终止……
    我在设计数据库的时候准备在一个表中设计一个NContent字段,它的数据类型为 varchar(50),由于是在可视
    模式下新建的,没有太注意,也许是鼠标滑轮不小心滑动力,导致NContent字段的数据变成了:nvarchar()
    类型了,所以在后来的添加数据时就出现了“将截断字符串或二进制数据。语句已终止……”的错误提示
      

  2.   

    看字段里是否定义有image,varbinary,插入字符串当然会报错
      

  3.   


    DECLARE @tab1 VARCHAR(32),
    @tab2 VARCHAR(32);

    SELECT @tab1='aaqx',
    @tab2 = 'aasbxw'SELECT OBJECT_NAME(col1.object_id) '表1', 
    col1.name '表1列名', 
    t1.name+'(' + CAST(col1.max_length AS VARCHAR(5)) + ')' '表1列类型',  
    OBJECT_NAME(col1.object_id) '表2', 
    col1.name '表2列名', 
    t1.name+'(' + CAST(col1.max_length AS VARCHAR(5)) + ')' '表2列类型'
    FROM sys.columns col1
    INNER JOIN sys.columns col2
    ON col1.name = col2.name
    AND (col1.system_type_id != col2.system_type_id OR col1.max_length !=col2.max_length)
    INNER JOIN sys.types t1
    ON col1.system_type_id = t1.system_type_id
    INNER JOIN sys.types t2
    ON col2.system_type_id = t2.system_type_id
    WHERE col1.object_id=OBJECT_ID(@tab1)
    AND col2.object_id=OBJECT_ID(@tab2)