select cast(field as varbinary(8000))

解决方案 »

  1.   

    declare @str varchar(10)
    set @str='abc中'
    while datalength(@str)>0
    begin
          print ascii(@str)
          set @str=stuff(@str,1,1,'')
    end--结果
    /*
    97
    98
    99
    214
    */
      

  2.   

    --自己写用户定义函数
    create function f_Char2Binary(@str varchar(8000))
    returns varchar(8000)
    AS
    BEGIN
    DECLARE @r varbinary(8000),@i int,@j int
    select @r=cast(@str as varbinary(8000)),@i=datalength(@r),@str=''
    while @i>0
    begin
    select @j=substring(@r,@i,1),
    @str=substring('0123456789ABCDEF',@j/16+1,1)
    +substring('0123456789ABCDEF',@j%16+1,1)
    +@str,
    @i=@i-1
    end
    return(@str)
    end
    go--调用用户定义函数
    select dbo.f_Char2Binary(field)
      

  3.   

    用户定义函数执行的返回是一个字符串,每两个字节代表原数据中一个字节的ASCII码。
      

  4.   

    楼上的方法不错。可以得到整个的ascii码值。
      

  5.   

    不知道你说得是不是这个意思 ?
    select unicode(field) from table1 where datalength(field)=5
      

  6.   


    汉字保存是2个字节,不是ASCII码,SQL不知怎取,可以用C#等高级语言在程序中取得unicodeUP
      

  7.   

    谢谢各位捧场,我用varbinary得出来的结果是这样的:
    select com_name,cast(com_name as varbinary(8000)) from device.com_info 
    结果集:
    常州 0xB3A3D6DD00后面居然有个0x00!!!replace(com_name,char(0x00),'')把整个字段清空了,因为select charindex(char(0x00,com_name)) 返回的是1这个00如何去掉?
      

  8.   

    ASCII码值 0 是字符串结束标志,只能出现在一个字符串的结尾位置。
    因此可以直接判断字段最后一个字符的ASCII码值是否 0,从而决定如何更新该列的值:
    ----------------------------------------------------------------------------
    update 
        device.com_info 
    set 
        name = left(name,len(name)-1)
    where
        ascii(right(name,1)) = 0
      

  9.   

    长征汽车制造厂 0xB3A4D5F7C6FBB3B5D6C6D4ECB3A7
    常林股份有限公司 0xB3A3C1D6B9C9B7DDD3D0CFDEB9ABCBBE
    常州矿山机械厂 0xB3A3D6DDBFF3C9BDBBFAD0B5B3A7
    常州 0xB3A3D6DD00
    常州铆焊厂 0xB3A3D6DDC3ADBAB8B3A7
    常州.长岭 0xB3A3D6DD2EB3A4C1EB
    常州起重机厂 0xB3A3D6DDC6F0D6D8BBFAB3A7这个00是如何产生的?