sql >> Databasteknik >  >> RDS >> Sqlserver

Base64-kodning i SQL Server 2005 T-SQL

Jag vet att detta redan har besvarats, men jag tillbringade bara mer tid än jag bryr mig om att erkänna att komma med enradiga SQL-satser för att åstadkomma detta, så jag delar dem här ifall någon annan behöver göra detsamma:

-- 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
;

Jag var tvungen att använda en subquery-genererad tabell i den första (kodnings) frågan eftersom jag inte kunde hitta något sätt att konvertera det ursprungliga värdet ("TestData") till dess hex-strängrepresentation ("5465737444617461") för att inkludera som argument till xs:hexBinary() i XQuery-satsen.

Jag hoppas att det här hjälper någon!



  1. SQL Server En utlösare för att fungera på infogning av flera rader

  2. MariaDB SUBSTR() Förklarad

  3. MySQL LEFT JOIN-fel

  4. Åtkomst nekad för användaren 'root'@'localhost' (med lösenord:YES )