varchar和varbinary错误hashbyte

时间:2016-06-20 20:04:36

标签: sql tsql

我需要在动态sql中编写以下内容

AttachFrame()
select HASHBYTES('SHA2_256',CONVERT(VARCHAR(256),'String'))

但是我收到错误以下错误消息:

  

消息402,级别16,状态1,行6数据类型varchar和   varbinary在add运算符中不兼容。

我将如何解决?

3 个答案:

答案 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)