SQL Serverのテーブルにvarchar
列があり、base64でエンコードされたテキスト文字列を保持しています。これを同等のプレーンテキストにデコードします
SQL Serverには、この種類の処理を行うnative機能はありますか?
Base64文字列の例:
cm9sZToxIHByb2R1Y2VyOjEyIHRpbWVzdGFtcDoxNDY4NjQwMjIyNTcxMDAwIGxhdGxuZ3tsYXRpdHVkZV9lNzo0MTY5ODkzOTQgbG9uZ2l0dWRlX2U3Oi03Mzg5NjYyMTB9IHJhZGl1czoxOTc2NA==
デコードするもの:
role:1 producer:12 timestamp:1468640222571000 latlng{latitude_e7:416989394 longitude_e7:-738966210} radius:19764
理解した:
_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以降)