Decodifica nativamente la stringa Base64 in SQL Server


15

Ho una varcharcolonna 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 delle 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

Risposte:


20

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 con BASE64_COL_NAMEil nome della colonna, oppure è possibile sostituirlo sql:column("BASE64_COLUMN")con sql:variable("@base64variable")se si desidera utilizzare una variabile dichiarata, ad esempio se si sta eseguendo una funzione o qualcosa del genere.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.