Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Kodowanie Base64 w SQL Server 2005 T-SQL

Wiem, że otrzymałem już odpowiedź, ale właśnie spędziłem więcej czasu, niż chciałbym przyznać, wymyślając jednowierszowe instrukcje SQL, aby to osiągnąć, więc podzielę się nimi tutaj na wypadek, gdyby ktoś inny musiał zrobić to samo:

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

Musiałem użyć tabeli generowanej przez podzapytanie w pierwszym zapytaniu (kodującym), ponieważ nie mogłem znaleźć żadnego sposobu na przekonwertowanie oryginalnej wartości („TestData”) na jej reprezentację w postaci ciągu szesnastkowego („546573744617461”), aby uwzględnić jako argument do xs:hexBinary() w instrukcji XQuery.

Mam nadzieję, że to komuś pomoże!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Optymalizacja zapytań SQL — Jak określić, kiedy i czy jest potrzebna

  2. Spłaszczanie hierarchicznego XML w SQL za pomocą metody nodes()

  3. SQL Server 2008:TOP 10 i wyróżniające się razem

  4. Jak włączyć indeksowanie pełnotekstowe w SQL Server 2005 Express?

  5. Niezależna od bazy danych konkatenacja ciągów SQL w Rails