sql >> Database teknologi >  >> RDS >> Sqlserver

Base64-kodning i SQL Server 2005 T-SQL

Jeg ved, at dette allerede er blevet besvaret, men jeg har lige brugt mere tid, end jeg gider, på at indrømme at komme med enkeltlinjede SQL-sætninger for at opnå dette, så jeg deler dem her, hvis andre skulle gøre det samme:

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

Jeg var nødt til at bruge en underforespørgsel-genereret tabel i den første (kodnings) forespørgsel, fordi jeg ikke kunne finde nogen måde at konvertere den oprindelige værdi ("TestData") til dens hex-strengrepræsentation ("5465737444617461") for at inkludere som argument til xs:hexBinary() i XQuery-sætningen.

Jeg håber, at dette hjælper nogen!



  1. Masseindlæsningsdatakonverteringsfejl (type uoverensstemmelse eller ugyldigt tegn for den angivne tegntabel) for række 1, kolonne 4 (år)

  2. Tilføj masser af data med et vist tidsinterval i Java

  3. Vil du indstille feltet til automatisk at indsætte tidsstempel på OPDATERING?

  4. postgres truncate er langsom