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
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)