it-swarm.com.de

Base64-Zeichenfolge nativ in SQL Server dekodieren

Ich habe eine varchar -Spalte 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 eine native Funktionalität, 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
15
GWR

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

Tauschen Sie einfach BASE64_COL_NAME Gegen Ihren Spaltennamen aus, oder Sie können sql:column("BASE64_COLUMN") durch sql:variable("@base64variable") ersetzen, wenn Sie eine deklarierte Variable verwenden möchten, z. wenn Sie eine Funktion oder etwas machen.

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

20
GWR