tab1c1(varchar)
CEC4D1A7
D2BDD2A92CCEC0C9FA处理后得到c2c2(varchar)
文学
医药,卫生

解决方案 »

  1.   

    不会吧,mssql里没有现成的函数么?如果每隔两个数字加一个%,就可以用php里的urldecode()了,我只会一点PHP和一点mssql
      

  2.   

    建一表保存gbk字符集,与16进制代码.
    再写一函数来实现.以下说一下我的思路.
    1.建一2字段的表变量,一字段为自增列,另一字段用于保存要转换的16进制码
      将要转换的16进制串,根据码的长度逐字切断在于表中
    2.将表与gbk字符集表进行查询,查出对应的字,再根据顺序合成.  
      

  3.   

    没办法切,因为有些是4个数字表示一个汉字,有些是2个数字表示一个西文字符。所以,我觉的,还是我说的办法靠谱一些:
    每隔两个数字加一个%,再用php里的urldecode()实现反编码
      

  4.   

    这个我最近有用到,就研究了一下,很简单。在此共享下,希望大家拍转!!!drop procedure prc_HexToStr
    go
    /*hanjs 080619 将16进制字符串转为 字符串 */
    create procedure prc_HexToStr @source varchar(4000),@str varchar(4000) output
    as
    begin
      declare @len int,@sql nvarchar(100)
      set @len=len(@source)/2
      set @sql='declare @c binary('+rtrim(@len)+') set @c=0x'+@source+' set @s=cast(@c as varchar(4000))'
      exec sp_executesql @sql,N'@s varchar(4000) output',@str output
    end
    go
    --调用例子
    declare @str varchar(4000),@s varchar(4000)
    set @s='CEC4D1A7'
    exec prc_HexToStr @s,@str output
    select @str文学set @s='D2BDD2A92CCEC0C9FA'
    exec prc_HexToStr @s,@str output
    select @str医药,卫生慢慢的感觉MSSQL有些优势了,其实只要是利用binary这个类型就可以处理了。
      

  5.   

    LZ对于这种最好还是用其他编程语言来实现。SQL有效率问题,不适合做运算,不过这个用sql倒是很方便!