当前位置:  开发笔记 > 编程语言 > 正文

msSql hex到base64

如何解决《msSqlhex到base64》经验,为你挑选了1个好方法。

我有一个sql数据库,jpeg图像存储为十六进制(0xFFD8 ...)有没有办法进行查询,其中结果将在base64而不是Hex?

试图google tho我找不到类似的东西:/



1> Tim..:

您可以通过利用sql解析器本身将hex转换为varbinary:

DECLARE @TestBinHex varchar(max), @TestBinary varbinary(max), @Statement nvarchar(max);
SELECT @TestBinHex = '0x012345';
SELECT @Statement = N'SELECT @binaryResult = ' + @TestBinHex;
EXECUTE sp_executesql @Statement, N'@binaryResult varbinary(max) OUTPUT', @binaryResult=@TestBinary OUTPUT;
SELECT @TestBinary

这将使sp_executesql执行包含文字0x012345的动态SQL,T-SQL解析器可以很好地理解它.然后,您可以将结果提供给@EdHarper引用的XML技巧,如下所示:

DECLARE @TestBinHex varchar(max), @TestBinary varbinary(max), @Statement nvarchar(max);
SELECT @TestBinHex = '0x012345';
SELECT @Statement = N'SELECT @binaryResult = ' + @TestBinHex;
EXECUTE sp_executesql @Statement, N'@binaryResult varbinary(max) OUTPUT', @binaryResult=@TestBinary OUTPUT;

SELECT
    CAST(N'' AS XML).value(
          'xs:base64Binary(xs:hexBinary(sql:column("bin")))'
        , 'VARCHAR(MAX)'
    )   Base64Encoding
FROM (
    SELECT @TestBinary AS bin
) AS bin_sql_server_temp;

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有