【问题标题】:Converting a MSSQL varbinary to a base64 string将 MSSQL varbinary 转换为 base64 字符串
【发布时间】:2019-05-09 14:17:01
【问题描述】:

目标

在 mssql 中获取数据,一个图像,转换为 base64 并嵌入到电子邮件中。

迪茨

我有一张图片,存储在 mssql 数据库的 varbinary 列中。

0xFFD8FFE00....

另一方面,我将其查询到一个古老的 Jython 环境中,因为这是我可以访问的全部内容。

当我查询和打印时,我似乎得到了一个带符号的字节数组或一个字符(也许?)。

>>> array('b', [-1, -40, -1, -32, 0, 16,...

另一个线程建议将其转储到 b64 编码器中

import base64
encoded = base64.b64encode(queryResult)

这给了我一个错误TypeError: b2a_base64(): 1st arg can't be coerced to String

该线程还提到将其转换为 json,但由于我在 Python 2.4 领域,我无法访问 import jsonimport simplejson。在这里使用 json 解释器对我来说似乎是一个主要的问题。

我还尝试在 SQL 端使用decompress 转换它并转换为xml,这些都不起作用。这些图像在作为电子邮件附件传递时工作正常,因此据我所知它们没有损坏。要将它们嵌入到 html 模板中,我需要取出那个 Base64 字符串。

我错过了一些东西,我不经常使用这些东西来解决它。我知道高级别的有符号/无符号字节序,但我不能完全破解这个坚果。

【问题讨论】:

  • 对于 T-SQL,请参阅 stackoverflow.com/questions/45664937/…
  • @Dan Guzman 我在那里尝试了很多方法,但还没有运气。仍在研究一些示例。提到的 TechNet 文章是一个易于理解的示例的热门垃圾。
  • 这个简单的例子对我有用:SELECT CAST(N'' AS XML).value('xs:base64Binary(xs:hexBinary(sql:column("YourBinaryColumn")))', 'VARCHAR(MAX)') Base64EncodingData FROM dbo.YourTable;

标签: python sql-server encoding jython-2.5


【解决方案1】:

将列值从 VARBINARY 转换为 Base64

在大多数情况下,我们需要处理表中的多行,并且我们只想将 VARBINARY 数据转换为 BASE64 字符串。基本解决方案与上面相同,除了使用 XML XQuery 的解决方案,我们只需使用不同的方法即可。

选项 1: 使用 JSON 将二进制转换为 Base64

    select Id,AvatarBinary
    from openjson(
        (
            select Id,AvatarBinary
            from AriTestTbl
            for json auto
        )
    ) with(Id int, AvatarBinary varchar(max))
    GO

选项 2: 使用 XML XQuery 将二进制文件转换为 Base64

    select Id,
        cast('' as xml).value(
            'xs:base64Binary(sql:column("AriTestTbl.AvatarBinary"))', 'varchar(max)'
        )
    from AriTestTbl
    GO

选项 3: 使用 XML 和提示“for xml path”将二进制转换为 Base64

    select Id,AvatarBinary,s
    from AriTestTbl
    cross apply (select AvatarBinary as '*' for xml path('')) T (s)
    GO

希望这会有所帮助...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 2014-05-10
    • 2017-07-28
    • 2014-03-14
    相关资源
    最近更新 更多