sql >> Database >  >> RDS >> Sqlserver

Base64-codering in SQL Server 2005 T-SQL

Ik weet dat dit al is beantwoord, maar ik heb gewoon meer tijd besteed dan ik wil toegeven om SQL-instructies met één regel te bedenken om dit te bereiken, dus ik zal ze hier delen voor het geval iemand anders hetzelfde moet doen:

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

Ik moest een door een subquery gegenereerde tabel gebruiken in de eerste (coderings)query omdat ik geen enkele manier kon vinden om de oorspronkelijke waarde ("TestData") om te zetten in zijn hexadecimale tekenreeksrepresentatie ("5465737444617461") om op te nemen als argument voor xs:hexBinary() in de XQuery-instructie.

Ik hoop dat dit iemand helpt!



  1. Script verwijderen SQL Server 2008

  2. Hoe een UUIDv4 genereren in MySQL?

  3. PostgreSQL Client v10 installeren op AWS Amazon Linux (EC2) AMI

  4. Kan INSERT [...] ON CONFLICT worden gebruikt voor schendingen van buitenlandse sleutels?