Розшифруйте рядок Base64 Native в SQL Server


15

У мене в varcharстовпці SQL Server стовпчик, в якому міститься текстовий рядок, закодований base64, який я хотів би розшифрувати, це звичайний текстовий еквівалент

Є чи у SQL Server будь нативний функціональні можливості для обробки такого роду речі?

Зразок рядка base64:

cm9sZToxIHByb2R1Y2VyOjEyIHRpbWVzdGFtcDoxNDY4NjQwMjIyNTcxMDAwIGxhdGxuZ3tsYXRpdHVkZV9lNzo0MTY5ODkzOTQgbG9uZ2l0dWRlX2U3Oi03Mzg5NjYyMTB9IHJhZGl1czoxOTc2NA==

Який декодує:

role:1 producer:12 timestamp:1468640222571000 latlng{latitude_e7:416989394 longitude_e7:-738966210} radius:19764

Відповіді:


20

Зрозумів це:

SELECT 
    CONVERT
    (
        VARCHAR(MAX), 
        CAST('' AS XML).value('xs:base64Binary(sql:column("BASE64_COLUMN"))', 'VARBINARY(MAX)')
    ) AS RESULT
FROM
    (
        SELECT 'cm9sZToxIHByb2R1Y2VyOjEyIHRpbWVzdGFtcDoxNDY4NjQwMjIyNTcxMDAwIGxhdGxuZ3tsYXRpdHVkZV9lNzo0MTY5ODkzOTQgbG9uZ2l0dWRlX2U3Oi03Mzg5NjYyMTB9IHJhZGl1czoxOTc2NA==' AS BASE64_COLUMN
    ) A

Вихід:

role:1 producer:12 timestamp:1468640222571000 latlng{latitude_e7:416989394 longitude_e7:-738966210} radius:19764

Просто поміняти BASE64_COL_NAMEсвоє ім'я стовпця, або ви можете замінити sql:column("BASE64_COLUMN")з , sql:variable("@base64variable")якщо ви хочете використовувати оголошену змінну , наприклад , якщо ви робите функцію або що - то.

Він використовує перетворення XSL, використовуючи вбудований функціонал XML (починаючи з SQL Server 2005)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.