Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Mã hóa Base64 trong SQL Server 2005 T-SQL

Tôi biết điều này đã được trả lời, nhưng tôi chỉ dành nhiều thời gian hơn tôi quan tâm để thừa nhận việc nghĩ ra các câu lệnh SQL một dòng để thực hiện điều này, vì vậy tôi sẽ chia sẻ chúng ở đây trong trường hợp bất kỳ ai khác cần làm như vậy:

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

Tôi đã phải sử dụng bảng do truy vấn con tạo trong truy vấn đầu tiên (mã hóa) vì tôi không thể tìm thấy bất kỳ cách nào để chuyển đổi giá trị ban đầu ("TestData") thành biểu diễn chuỗi hex của nó ("5465737444617461") để bao gồm làm đối số xs:hexBinary () trong câu lệnh XQuery.

Tôi hy vọng điều này sẽ giúp ai đó!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng lịch sử SQL Server - điền thông qua SP hoặc Trigger?

  2. Trong SQL Server, tại sao NULL không bằng chuỗi trống VÀ không bằng chuỗi trống?

  3. Nhiều mệnh đề OUTPUT trong lệnh SQL MERGE / INSERT / DELETE?

  4. Thiết lập kịch bản của thư cơ sở dữ liệu

  5. Chèn id (được tạo tự động, chỉ cột)