Vím, že na to již bylo zodpovězeno, ale strávil jsem více času, než jsem chtěl přiznat, vymýšlením jednořádkových příkazů SQL, abych toho dosáhl, takže je zde pro případ, že by někdo potřeboval udělat totéž, sdílím:
-- 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
;
V prvním (kódovacím) dotazu jsem musel použít tabulku vygenerovanou poddotazem, protože jsem nemohl najít žádný způsob, jak převést původní hodnotu ("TestData") na její hexadecimální reprezentaci řetězce ("5465737444617461"), kterou bych zahrnul jako argument do xs:hexBinary() v příkazu XQuery.
Doufám, že to někomu pomůže!