【问题标题】:Is there a way to turn sys.fn_varbintohexstr result back to varbinary?有没有办法将 sys.fn_varbintohexstr 结果转回 varbinary?
【发布时间】:2013-07-22 23:44:42
【问题描述】:

SQL Server 中有 function 来执行此操作吗? 反转sys.fn_varbintohexstr?

【问题讨论】:

    标签: sql-server function hex varbinary


    【解决方案1】:

    您需要在动态 SQL 语句中使用十六进制字符串,以便将其解析为 varbinary。以下是如何做到这一点的一个示例。

    -- Our original and fn_varbintohexstr values:
    DECLARE @original varbinary(max) = 0xd0cf11;
    DECLARE @sql nvarchar(max) = N'SET @converted = ' + sys.fn_varbintohexstr(@original) + ';';
    
    -- Do the conversion
    DECLARE @converted varbinary(max);
    EXEC sp_executesql @sql,
       N'@converted varbinary(max) OUTPUT',
       @converted = @converted OUTPUT;
    
    -- Proof it worked
    PRINT @original;
    PRINT @converted;
    PRINT CASE WHEN @original = @converted THEN 'Same' ELSE 'Different' END;
    

    这打印Same

    如果您尝试 user1617237 的版本,您会明白为什么它不是正确答案。

    【讨论】:

      【解决方案2】:

      select convert(varbinary(max),@hex,2) from foobar

      【讨论】:

      • 这不起作用。您确实会从中得到varbinary,但它是原始varbinary 的字符串表示形式的varbinary。它不是原来的 varbinary。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-17
      • 2017-08-17
      • 2015-07-19
      • 2017-04-02
      • 1970-01-01
      • 2022-11-11
      相关资源
      最近更新 更多