SQL ServerでBase64文字列をネイティブにデコードする


15

私が持っているvarchar、私はそれのプレーンテキスト同等にデコードしたいBase64でエンコードされたテキスト文字列を保持するSQL Serverのテーブルのカラムを

SQL Serverには、このタイプのものを処理するためのネイティブ機能がありますか?

base64文字列の例:

cm9sZToxIHByb2R1Y2VyOjEyIHRpbWVzdGFtcDoxNDY4NjQwMjIyNTcxMDAwIGxhdGxuZ3tsYXRpdHVkZV9lNzo0MTY5ODkzOTQgbG9uZ2l0dWRlX2U3Oi03Mzg5NjYyMTB9IHJhZGl1czoxOTc2NA==

デコードするもの:

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

回答:


20

理解した:

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

出力:

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

単にBASE64_COL_NAME列名を交換sql:column("BASE64_COLUMN")するsql:variable("@base64variable")か、宣言した変数を使用する場合、たとえば関数などを作成する場合に置き換えることができます。

組み込みのXML機能を使用してXSL変換を利用します(SQL Server 2005以降)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.