【发布时间】:2020-03-17 12:56:13
【问题描述】:
Firebird 中是否有任何编码/解码 base 64 的功能? 在 SQL Server 中有一种使用 xml 的技术:
declare @source varbinary(max)=convert(varbinary(max),'AbdalrahmanIbnSewareddahab')
SELECT CAST('' AS XML).value('xs:base64Binary(sql:variable(''@source''))','VARCHAR(MAX)') as BASE64_ENCODED;
结果是 QWJkYWxyYWhtYW5JYm5TZXdhcmVkZGFoYWI=
如何在 Firebird(2.5 或 3.0)中做到这一点?
【问题讨论】:
-
你可以为它写一个 UDF,就像这个论坛帖子(俄语)sql.ru/forum/1320646/proshu-pomoshhi-po-udf - 但是与 BLOB 相关的 UDF 需要准确的编码。或者,您可以在 PSQL 中编写 base64 算法并将其包装到存储过程或存储函数(仅限 FB3)中。这并不难,因为 base64 算法很简单。但可能效率不高,因为 PSQL 没有指针或索引数组。也就是说,人们过去使用 SP 计算 MD5,而且计算量更大。仍然适用于中低负载。
标签: encoding base64 firebird decoding