VARCHAR和VARBINARY错误哈希特



我需要在动态sql

中写下以下内容
select HASHBYTES('SHA2_256',CONVERT(VARCHAR(256),'String'))

set @sqlstr = 'select ' + HASHBYTES('''SHA2_256''',(CONVERT(VARCHAR 
(256),'String')))   

但是我遇到了以下错误消息:

msg 402,级别16,状态1,第6行数据类型VARCHAR和 varbinary在添加操作员中不兼容。

我将如何解决?

类似这样的东西

declare 
@sqlstr varchar(8000),
@var varchar(8000)
set @var =  HASHBYTES('SHA2_256',CONVERT(VARCHAR(256),'String'))
set @sqlstr = 'select ' + ''''+@var+''''
exec( @sqlstr)

declare 
@sqlstr varchar(8000)

set @sqlstr = 'select  HASHBYTES('+''''+'SHA2_256'+''''+',CONVERT(VARCHAR(256),'+''''+'String'+''''+'))'
exec( @sqlstr)

尝试以下:

declare @sqlstr varchar(max)
set @sqlstr = 'select HASHBYTES(''SHA2_256'',(CONVERT(VARCHAR(256),''String'')))  '
exec(@sqlstr)

我根本不清楚您要实际做的事情。但是,您会收到您遇到的错误,因为HashBytes()的返回值是varbinary。当左侧为varchar时, +运算符(如 'select '),右侧是varbinary。

尝试:

set @sqlstr = 'select ' + CONVERT(VARCHAR(66),HASHBYTES('SHA2_256',(CONVERT(VARCHAR(256),'String'))),1)

最新更新