insert  RubisDatabse.dbo.MI_Member ( HeadPicture, UndeMemberCode )
select CONVERT(varchar(MAX), CONVERT(varbinary(MAX), N'MIPicture')),
CONVERT(varchar(MAX), CONVERT(varbinary(MAX), N'MIUnderWrite'))
 from RubisHE.dbo.MemberInfo上述语句,两个不同数据库中A表 值添加到B表中,将 Image类型转换为 varchar类型,执行语句时,报错:
将截断字符串或二进制数据。
语句已终止。
请问,为什么,这样转换有误吗?  应该怎样转换啊?

解决方案 »

  1.   

    image类型数据比varchar的大,截断了
      

  2.   

    另外你的image里存的什么数据,为什么要转成varchar
      

  3.   


    我是在弄数据,把两个数据库里面的表数据整理到一块去,所以才做这个. image里面存的二进制的数据. 那怎么转换呀
      

  4.   

    你倒到另外一个表里,那个表也用image类型就可以导了
      

  5.   

    image太大了。不可以转换成varchar
      

  6.   

    image太大了。不可以转换成varchar
      

  7.   

    好奇怪!
    你的这个查询:
    select CONVERT(varchar(MAX), CONVERT(varbinary(MAX), N'MIPicture')),
    CONVERT(varchar(MAX), CONVERT(varbinary(MAX), N'MIUnderWrite'))既然是将一个常量进行变换,那后面要 from RubisHE.dbo.MemberInfo 干什么?而且,为什么要把那两个字符串转换两次呢?意义何在?另外,你的这个语句插入错误,可能是由于你的表 MI_Member ( HeadPicture, UndeMemberCode ) 中的两个字段不是 varchar(max) 型的,因为你在查询中把那两个列转为 varchar(max)型的了.
      

  8.   

      回复楼上的,就算转换为了max,字段不是nvarchar(max)也一样能插入数据
        @UserID int,
    @IsSolve bit,
    @ErrorType nvarchar(50),
    @TableName  nvarchar(20)
    AS
    declare @sql nvarchar(300)
    set @sql='select BuildErrorID,UserID,ErrorType,ErrorDescription,ReaSon,StandardAS,Measures,IsSolve,RecordName,Score,AddDate from '+@TableName+'
     where UserID='+CONVERT(nvarchar,@UserID)+' and IsSolve=@IsSolve and ErrorType='''+@ErrorType+''''
    exec sp_executesql @sql,N'@IsSolve bit',@IsSolve=@IsSolve楼主可以看看这个实例  这个也是不能转换数据的
       最常规解决办法是,存你image的路径,楼主那样做不合理。。