[解決済み] SQL Server 2005 T-SQL での Base64 エンコーディング
2022-06-12 02:18:58
質問
文字列を Base64 文字列としてエンコードする T-SQL クエリを書きたいと思っています。 驚いたことに、Base64 エンコードを行うためのネイティブ T-SQL 関数が見当たりません。 ネイティブ関数は存在するのでしょうか? そうでない場合、T-SQLでBase64エンコードを行う最良の方法は何でしょうか?
どのように解決するのですか?
これはすでに回答されていると思いますが、私はこれを達成するための単一行の SQL 文を考え出すのに、認めたくないほど多くの時間を費やしましたので、他の誰かが同じことをする必要がある場合に備えて、ここでそれを共有します。
-- Encode the string "TestData" in Base64 to get "VGVzdERhdGE="
SELECT
CAST(N'' AS XML).value(
'xs:base64Binary(xs:hexBinary(sql:column("bin")))'
, 'VARCHAR(MAX)'
) Base64Encoding
FROM (
SELECT CAST('TestData' AS VARBINARY(MAX)) AS bin
) AS bin_sql_server_temp;
-- Decode the Base64-encoded string "VGVzdERhdGE=" to get back "TestData"
SELECT
CAST(
CAST(N'' AS XML).value(
'xs:base64Binary("VGVzdERhdGE=")'
, 'VARBINARY(MAX)'
)
AS VARCHAR(MAX)
) ASCIIEncoding
;
最初の (エンコーディング) クエリでサブクエリによって生成されたテーブルを使用しなければならなかったのは、元の値 ("TestData") を、XQuery 文の xs:hexBinary() への引数として含めるためにその hex 文字列表現 ("5465737444617461") に変換する方法を見つけることができなかったからです。
これが誰かの助けになることを願っています。
関連
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] SQL Server にテーブルが存在するかどうかを確認する
-
[解決済み] Base64エンコーディングは何に使うのですか?
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み】Node.jsでBase64エンコードを行うにはどうすればよいですか?
-
[解決済み】JavaScriptで文字列をBase64にエンコードするにはどうすればいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] nvarchar 型から datetime 型へのデータ型変換エラー
-
[解決済み] 存在しない重複があるため、インデックスを作成できない?
-
[解決済み] SQL Server 2005でアップサート(更新または挿入)する方法
-
[解決済み] Sqlサーバーの文字列がNULLまたは空であるかどうかを確認する方法
-
[解決済み】SQL Serverスキーマは何の役に立つのか?
-
[解決済み] テーブルを変更し、複数の列を追加する ms sql
-
[解決済み] SQL Server Brokerを有効にするのに時間がかかりすぎる
-
[解決済み] SQL Server 2005 T-SQL での Base64 エンコーディング