web-dev-qa-db-fra.com

Décoder la chaîne Base64 en mode natif dans SQL Server

J'ai une colonne varchar dans une table dans SQL Server qui contient une chaîne de texte encodée en base64 que je voudrais décoder en son équivalent en texte brut

SQL Server a-t-il une fonctionnalité native pour gérer ce type de chose?

Un exemple de chaîne base64:

cm9sZToxIHByb2R1Y2VyOjEyIHRpbWVzdGFtcDoxNDY4NjQwMjIyNTcxMDAwIGxhdGxuZ3tsYXRpdHVkZV9lNzo0MTY5ODkzOTQgbG9uZ2l0dWRlX2U3Oi03Mzg5NjYyMTB9IHJhZGl1czoxOTc2NA==

Qui décode pour:

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

Deviner:

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

Production:

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

Échangez simplement BASE64_COL_NAME Pour le nom de votre colonne, ou vous pouvez remplacer sql:column("BASE64_COLUMN") par sql:variable("@base64variable") si vous souhaitez utiliser une variable déclarée, par exemple si vous créez une fonction ou quelque chose.

Il utilise une transformation XSL à l'aide de la fonctionnalité XML intégrée (depuis SQL Server 2005)

20
GWR