Я знаю, что на этот вопрос уже дан ответ, но я просто потратил больше времени, чем хотел бы, чтобы придумать однострочные операторы 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.
Надеюсь, это кому-нибудь поможет!