--将varbinary转换为十六进制的字符串
declare @b varbinary(300), @str varchar(300)
select @b = 0x06555755565A5A5B595F5C5C5C41434142464647454B4848484D
exec master..xp_varbintohexstr @b, @str out

解决方案 »

  1.   

    --改成函数即为:--binary转换为字符串
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_bin2str]') and xtype in (N'FN', N'IF', N'TF'))
    drop function [dbo].[f_bin2str]
    GOcreate function f_bin2str(@bin varbinary(300))
    returns varchar(300)
    as
    begin
    declare @re varchar(300)
    exec master..xp_varbintohexstr @bin,@re out
    return(@re)
    end
    go--调用:
    select dbo.f_bin2str(pos_password) from v_data_info_query
      

  2.   

    --如果楼主是在binary中存储字符,要还原为字符,可以用:declare @b varbinary(300)
    set @b=cast('中国人' as varbinary(300))
    select convert(varchar,@b)
      

  3.   

    --加密:
    declare @logintable table(username varchar(20),passwd varbinary(256))
    insert @logintable(username,passwd) values('yourname',pwdencrypt('123456'))declare @pwd varbinary(256)select @pwd=passwd from @logintable where username='yourname'
    --比较:
    if pwdcompare('12356',@pwd)=1
    print 'true'
    else 
    print 'false'select * from @logintable