如何在创建选择查询时使用hashbytes()

时间:2013-04-23 08:33:57

标签: sql sql-server select

我想将密码从 varchar 转换为二进制

我有像

这样的查询
SELECT 'INSERT INTO Table2(Username,password)values('+
IsNull(''''+wl.UserName+'''', 'NULL')+','+
     HASHBYTES('MD5',ISNULL(wl.Password,'NULL'))+')'

但是当我执行上面的代码时,我有错误,

  The data types nvarchar and varbinary are incompatible in the add operator.

我需要你的帮助。我的查询是正确的。为什么会这样表现出来。

1 个答案:

答案 0 :(得分:0)

您可以使用此查询。

SELECT 'INSERT INTO Table2(Username,password)values('+
IsNull(''''+wl.UserName+'''', 'NULL')+','+
      isnull('0x' + cast('' as xml).value('xs:hexBinary(sql:column("password") )', 'varchar(max)'),'NULL') + ')'
from (select username, hashbytes('md5',password) as password from wl) wl

参考:Converting from hex string to varbinary and vice versa