Decodifique la cadena Base64 de forma nativa en SQL Server

15

Tengo una varcharcolumna en una tabla en SQL Server que contiene una cadena de texto codificada en base64 que me gustaría decodificar en su equivalente de texto sin formato

¿SQL Server tiene alguna funcionalidad nativa para manejar este tipo de cosas?

Una cadena de base64 de muestra:

cm9sZToxIHByb2R1Y2VyOjEyIHRpbWVzdGFtcDoxNDY4NjQwMjIyNTcxMDAwIGxhdGxuZ3tsYXRpdHVkZV9lNzo0MTY5ODkzOTQgbG9uZ2l0dWRlX2U3Oi03Mzg5NjYyMTB9IHJhZGl1czoxOTc2NA==

Que decodifica a:

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

Respuestas:

20

Lo averigué:

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

Salida:

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

Sólo intercambiar BASE64_COL_NAMEsu nombre de la columna, o se puede reemplazar sql:column("BASE64_COLUMN")con sql:variable("@base64variable")si desea utilizar una variable declarada por ejemplo, si va a realizar una función o algo así.

Utiliza una transformación XSL utilizando la funcionalidad XML incorporada (desde SQL Server 2005)

GWR
fuente