我想编写一个 T-SQL 查询,将字符串编码为 Base64 字符串。令人惊讶的是,我找不到任何用于执行 Base64 编码的本机 T-SQL 函数。是否存在本机函数?如果没有,在 T-SQL 中进行 Base64 编码的最佳方法是什么?
我知道这个问题已经得到了解答,但我只是花了比我愿意承认的更多的时间来想出单行 SQL 语句来完成此任务,所以我将在这里分享它们,以防其他人需要这样做:
-- Encode the string "TestData" in Base64 to get "VGVzdERhdGE="
SELECT
CAST(N'' AS XML).value(
'xs:base64Binary(xs:hexBinary(sql:column("bin")))'
, 'VARCHAR(MAX)'
) Base64Encoding
FROM (
SELECT CAST('TestData' AS VARBINARY(MAX)) AS bin
) AS bin_sql_server_temp;
-- Decode the Base64-encoded string "VGVzdERhdGE=" to get back "TestData"
SELECT
CAST(
CAST(N'' AS XML).value(
'xs:base64Binary("VGVzdERhdGE=")'
, 'VARBINARY(MAX)'
)
AS VARCHAR(MAX)
) ASCIIEncoding
;
我必须在第一个(编码)查询中使用子查询生成的表,因为我找不到任何方法将原始值(“TestData”)转换为其十六进制字符串表示形式(“5465737444617461”)以作为参数包含在内XQuery 语句中的 xs:hexBinary()。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)