これはすでに回答されていることは知っていますが、これを達成するために単一行の 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") を 16 進文字列表現 ("5465737444617461") に変換して引数として含める方法が見つからなかったため、最初の (エンコード) クエリでサブクエリによって生成されたテーブルを使用する必要がありました。 XQuery ステートメントの xs:hexBinary()。
これが誰かの役に立てば幸いです!