我需要在动态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)