Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Base64 кодиране в SQL Server 2005 T-SQL

Знам, че на това вече е отговорено, но просто отделих повече време, отколкото искам да призная, за да измисля едноредови 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.

Надявам се това да помогне на някого!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Виртуални машини Azure за използване на SQL сървър

  2. SQL Server 2005/2008:Вмъкване на файл в колона varbinary(max) в Transact-SQL

  3. По-добре ли е да направите equi join в клаузата from или where

  4. Три условия в една колона на таблицата

  5. Създайте задание за агент на SQL Server с помощта на SSMS