原数据为16进制字符串,里面包括0x00什么的,要把它完整地保存到数据库的varbinary字段中该怎么作?用最简单的方式最好,比如拼一个sql串,直接运行insert into插入.

解决方案 »

  1.   

    create table tb(id int identity,data varbinary(200))
    go
    insert into tb(data) select convert(varbinary,'0xf78abc082')
    go
    select * from tb
    go
    drop table tb
    go
      

  2.   

    declare @t table (x Varbinary(20))insert @t VALUES (0x12345)insert @t select 0x123+0x456insert @t select 0x1234+0x5678select * from @t--结果
    x                                          
    ------------------------------------------ 
    0x012345
    0x01230456
    0x12345678(所影响的行数为 3 行)
      

  3.   

    declare @a table(col1 varbinary(100))
    insert into @a 
    select cast('0x00078a' as varbinary)
      

  4.   

    感谢各位,不过我这个原数据是不确定的,长度也不定,convert中没有指定原数据长度的地方,怎么能保证转换的完整呢?比如,我要转换的原数据是0x01020300040506,能保证转换后不丢掉0x00后面的内容吗?
      

  5.   

    难道要把16进制源码转换为可见的16进制字符串?
    比如我定义一个char strtmp[3],我本来的数据是strtmp[0]=0x01,strtmp[1]=0x00,strtmp[2]=0x02,
    现在是不是得定义char strtmp2[6],变为strtmp2[0]=0x30,strtmp2[1]=0x31,strtmp2[2]=0x30,strtmp2[3]=0x30,strtmp2[4]=0x30,strtmp2[5]=0x32 这样的?再去用convert?
    为了大家理解方便,写得啰唆了,见笑.