it-swarm.it

Decodifica nativamente la stringa Base64 in SQL Server

Ho una colonna varchar in una tabella in SQL Server che contiene una stringa di testo con codifica base64 che vorrei decodificare in equivalente testo normale

SQL Server ha funzionalità native per gestire questo tipo di cose?

Una stringa di base64:

cm9sZToxIHByb2R1Y2VyOjEyIHRpbWVzdGFtcDoxNDY4NjQwMjIyNTcxMDAwIGxhdGxuZ3tsYXRpdHVkZV9lNzo0MTY5ODkzOTQgbG9uZ2l0dWRlX2U3Oi03Mzg5NjYyMTB9IHJhZGl1czoxOTc2NA==

Che decodifica per:

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

Capito:

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

Produzione:

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

Basta scambiare BASE64_COL_NAME Con il nome della colonna oppure sostituire sql:column("BASE64_COLUMN") con sql:variable("@base64variable") se si desidera utilizzare una variabile dichiarata, ad es. se stai facendo una funzione o qualcosa del genere.

Fa uso di una trasformazione XSL utilizzando la funzionalità XML integrata (da SQL Server 2005)

20
GWR