Base64-Zeichenfolge nativ in SQL Server dekodieren

14

Ich habe eine varcharSpalte in einer Tabelle in SQL Server, die eine Base64-codierte Textzeichenfolge enthält, die ich in das Nur-Text-Äquivalent dekodieren möchte

Verfügt SQL Server über native Funktionen, um diese Art von Dingen zu handhaben?

Eine Beispiel-Base64-Zeichenfolge:

cm9sZToxIHByb2R1Y2VyOjEyIHRpbWVzdGFtcDoxNDY4NjQwMjIyNTcxMDAwIGxhdGxuZ3tsYXRpdHVkZV9lNzo0MTY5ODkzOTQgbG9uZ2l0dWRlX2U3Oi03Mzg5NjYyMTB9IHJhZGl1czoxOTc2NA==

Welches dekodiert zu:

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

Antworten:

19

Herausgefunden:

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

Ausgabe:

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

Nur auslagern BASE64_COL_NAMEfür Ihren Spaltennamen, oder Sie können ersetzen sql:column("BASE64_COLUMN")mit , sql:variable("@base64variable")wenn Sie einen deklarierte Variable zB verwenden, wenn Sie eine Funktion oder etwas machen.

Es verwendet eine XSL-Transformation mit integrierten XML-Funktionen (seit SQL Server 2005).

GWR
quelle