我需要在动态sql中编写以下内容
AttachFrame()
select HASHBYTES('SHA2_256',CONVERT(VARCHAR(256),'String'))
但是我收到错误以下错误消息:
消息402,级别16,状态1,行6数据类型varchar和 varbinary在add运算符中不兼容。
我将如何解决?
答案 0 :(得分:0)
类似这样的事情
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)
答案 1 :(得分:0)
试试这个:
declare @sqlstr varchar(max)
set @sqlstr = 'select HASHBYTES(''SHA2_256'',(CONVERT(VARCHAR(256),''String''))) '
exec(@sqlstr)
答案 2 :(得分:0)
我根本不清楚你想要做什么。但是,您收到的错误是因为HASHBYTES()的返回值是varbinary。如果左边是varchar,如+
,右边是varbinary,则不定义'select '
运算符。
尝试:
set @sqlstr = 'select ' + CONVERT(VARCHAR(66),HASHBYTES('SHA2_256',(CONVERT(VARCHAR(256),'String'))),1)