【问题标题】:Varchar and varbinary error hashbyteVarchar 和 varbinary 错误哈希字节
【发布时间】:2016-10-22 04:55:10
【问题描述】:

我需要在动态sql中写如下

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

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

但我收到以下错误消息:

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

我将如何解决?

【问题讨论】:

  • 我做错了....我认为我处理了错误的哈希字节

标签: sql tsql


【解决方案1】:

类似的东西

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)

【讨论】:

    【解决方案2】:

    试试这个:

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

    【讨论】:

      【解决方案3】:

      我根本不清楚您实际上要做什么。但是,您会遇到错误,因为 HASHBYTES() 的返回值是 varbinary。 + 运算符在左侧为 varchar(如 'select ')且右侧为 varbinary 时未定义。

      试试:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-26
        • 1970-01-01
        • 2018-01-18
        • 2017-07-14
        • 1970-01-01
        • 1970-01-01
        • 2022-10-24
        • 1970-01-01
        相关资源
        最近更新 更多