Wiem, że otrzymałem już odpowiedź, ale właśnie spędziłem więcej czasu, niż chciałbym przyznać, wymyślając jednowierszowe instrukcje SQL, aby to osiągnąć, więc podzielę się nimi tutaj na wypadek, gdyby ktoś inny musiał zrobić to samo:
-- 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
;
Musiałem użyć tabeli generowanej przez podzapytanie w pierwszym zapytaniu (kodującym), ponieważ nie mogłem znaleźć żadnego sposobu na przekonwertowanie oryginalnej wartości („TestData”) na jej reprezentację w postaci ciągu szesnastkowego („546573744617461”), aby uwzględnić jako argument do xs:hexBinary() w instrukcji XQuery.
Mam nadzieję, że to komuś pomoże!