Декодировать строку Base64 непосредственно в 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).

ГУВ
источник