MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのBase64エンコード・デコード完全ガイド!TO_BASE64とFROM_BASE64の使い方

MySQLでは、文字列をBase64形式にエンコード・デコードするための組み込み関数として、以下の2つが用意されています。

  • TO_BASE64() … 文字列をBase64形式にエンコードする
  • FROM_BASE64() … Base64形式の文字列を元の値にデコードする

この記事では、それぞれの構文と実際の使用例を、初心者にもわかりやすく解説します。

Base64エンコード・デコードの基本構文

まずは基本となる構文を確認しましょう。エンコードを行う場合はTO_BASE64()を使用します。

SELECT TO_BASE64(任意の値) AS エイリアス名;

デコードを行う場合はFROM_BASE64()を使用します。

SELECT FROM_BASE64(エンコード済みの値) AS エイリアス名;

ケース1:文字列をBase64にエンコードする

実際に「Password」という文字列をエンコードしてみましょう。次のようなクエリを実行します。

mysql> SELECT TO_BASE64('Password') AS Base64EncodeValue;

実行結果

+-------------------+
| Base64EncodeValue |
+-------------------+
| UGFzc3dvcmQ=      |
+-------------------+
1 row in set (0.00 sec)

「Password」が「UGFzc3dvcmQ=」というBase64形式の文字列に変換されました。

ケース2:Base64文字列をデコードする

続いて、先ほど取得した「UGFzc3dvcmQ=」をFROM_BASE64()でデコードして、元の値に戻せるか確認します。

mysql> SELECT FROM_BASE64('UGFzc3dvcmQ=') AS Base64DecodeValue;

実行結果

+-------------------+
| Base64DecodeValue |
+-------------------+
| Password          |
+-------------------+
1 row in set (0.00 sec)

きちんと元の「Password」に戻りました。このように、TO_BASE64()とFROM_BASE64()は対で動作するため、エンコードした値を後から復元することができます。

テーブルを使った実践的な検証方法

より実践的に理解するために、サンプルテーブルを作成して検証してみましょう。まずはテーブルを作成します。

mysql> CREATE TABLE Base64Demo
-> (
-> ProductId VARCHAR(100)
-> );
Query OK, 0 rows affected (0.54 sec)

次に、INSERT文でレコードを3件登録します。

mysql> INSERT INTO Base64Demo VALUES('321Product');
Query OK, 1 row affected (0.16 sec)

mysql> INSERT INTO Base64Demo VALUES('Product456');
Query OK, 1 row affected (0.14 sec)

mysql> INSERT INTO Base64Demo VALUES('654Product');
Query OK, 1 row affected (0.15 sec)

SELECT文で全レコードを表示して、正しく登録されているか確認しましょう。

mysql> SELECT * FROM Base64Demo;

実行結果

+------------+
| ProductId  |
+------------+
| 321Product |
| Product456 |
| 654Product |
+------------+
3 rows in set (0.00 sec)

カラムの値を一括でBase64エンコードする

テーブル内の全データに対してTO_BASE64()を適用すると、各レコードをまとめてエンコードできます。

mysql> SELECT TO_BASE64(ProductId) AS Base64Encode FROM Base64Demo;

実行結果

+------------------+
| Base64Encode     |
+------------------+
| MzIxUHJvZHVjdA== |
| UHJvZHVjdDQ1Ng== |
| NjU0UHJvZHVjdA== |
+------------------+
3 rows in set (0.00 sec)

デコードして元の値に戻るか検証する

最後に、1番目のエンコード結果「MzIxUHJvZHVjdA==」をデコードし、元の値が取得できるか確認します。

mysql> SELECT FROM_BASE64('MzIxUHJvZHVjdA==') AS DecodeValue;

実行結果

+-------------+
| DecodeValue |
+-------------+
| 321Product  |
+-------------+
1 row in set (0.00 sec)

元の値である「321Product」が正しく返ってきました。このように、MySQLのTO_BASE64()とFROM_BASE64()を使えば、データのBase64変換と復元を簡単に行うことができます。

まとめ

MySQLにおけるBase64変換は、以下のポイントをおさえておけば大丈夫です。

  • TO_BASE64():任意の文字列やカラムの値をBase64形式にエンコードできる
  • FROM_BASE64():エンコード済みの値を元の文字列にデコードできる
  • 両者は対の関係にあるため、エンコード→デコードの往復で元の値を復元可能

IDやトークンなどの一時的な文字列変換が必要な場面で、ぜひ活用してみてください。

  1. MySQLで行を削除する方法|DELETE文の基本と実行例を解説

    MySQLでテーブルから特定の行(レコード)を削除するには、DELETE文を使用します。この記事では、実際にサンプルテーブルを作成し、DELETE文を使って行を削除する手順を順番に解説します。1. サンプルテーブルの作成まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> CustomerName varchar(100), -> Cus

  2. MySQLクエリの入力方法|基本ルールから複数行クエリまで解説

    MySQLクエリの入力方法コンソールでクエリを入力する前に、まずサーバーに正しく接続できているかを確認することが重要です。以下のクエリを実行すると、使用中のサーバーのバージョン番号と現在の日付が表示されます。mysql> SELECT VERSION(), CURRENT_DATE;ポイント:関数「VERSION()」や「CURRENT_DATE」は大文字・小文字を区別しません。つまり、「version()」「Version()」「vERsion()」など、いずれも同じ意味として処理されます。「CURRENT_DATE」についても同様です。MySQLクエリ実行時の基本ルールSQLクエリの