Знам, че на това вече е отговорено, но просто отделих повече време, отколкото искам да призная, за да измисля едноредови 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“), за да включа като аргумент на xs:hexBinary() в оператора XQuery.
Надявам се това да помогне на някого!