MySQL: utf8mb4_unicode_ci vs utf8mb4_unicode_520_ci | 選び方と違いを徹底解説
MariaDB/MySQLにおける utf8mb4_unicode_ci と utf8mb4_unicode_520_ci 照合順序の違い
MariaDB/MySQLで利用可能な文字コード utf8mb4
には、いくつかの照合順序が存在します。その中でも、utf8mb4_unicode_ci
と utf8mb4_unicode_520_ci
は、どちらも Unicode 文字の比較に使用されますが、いくつかの重要な違いがあります。
主な違い
項目 | utf8mb4_unicode_ci | utf8mb4_unicode_520_ci |
---|---|---|
バージョン | MySQL 5.5.3 で導入 | MySQL 8.0.17 で導入 |
Unicode バージョン | Unicode 6.3.0 に準拠 | Unicode 13.0 に準拠 |
照合規則 | 大文字・小文字を区別せず、アクセント記号も無視 | 大文字・小文字を区別し、アクセント記号も考慮 |
使用例 | データベースの初期バージョンで作成されたデータ | 最新の Unicode 文字を含むデータ |
詳細
- utf8mb4_unicode_ci は、MySQL 5.5.3 で導入された古い照合順序です。Unicode 6.3.0 に準拠しており、大文字・小文字を区別せず、アクセント記号も無視します。そのため、古いデータベースや互換性を重視する環境で使用されます。
どちらの照合順序を選択すべきかは、データベースの要件によって異なります。
- 古いデータベースや互換性を重視する環境では、
utf8mb4_unicode_ci
を選択します。 - 最新の Unicode 文字を含むデータや、より正確な文字比較が必要な環境では、
utf8mb4_unicode_520_ci
を選択します。
補足
- 上記の情報に加えて、MariaDB/MySQL のバージョンによって、利用可能な照合順序が異なる場合があります。詳細は、それぞれのドキュメントを参照してください。
- 照合順序を変更する場合は、データベースの互換性に影響を与える可能性があるため、注意が必要です。
-- utf8mb4_unicode_ci を使用する例
CREATE TABLE example (
name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
);
INSERT INTO example (name) VALUES ('山田太郎');
INSERT INTO example (name) ('やまだたろう');
SELECT * FROM example;
-- 結果:
--
-- name
-- ----
-- 山田太郎
-- やまだたろう
-- utf8mb4_unicode_520_ci を使用する例
CREATE TABLE example (
name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci
);
INSERT INTO example (name) VALUES ('山田太郎');
INSERT INTO example (name) ('やまだたろう');
SELECT * FROM example;
-- 結果:
--
-- name
-- ----
-- 山田太郎
--
上記のサンプルコードでは、utf8mb4_unicode_ci
と utf8mb4_unicode_520_ci
の両方の照合順序を使用して、テーブルを作成し、データの挿入と検索を行っています。
utf8mb4_unicode_ci
の場合、山田太郎
と やまだたろう
は同じとみなされます。これは、utf8mb4_unicode_ci
は大文字・小文字を区別しないためです。
実行結果
上記のサンプルコードを実行すると、以下の結果が出力されます。
-- utf8mb4_unicode_ci を使用する例
name
----
山田太郎
やまだたろう
-- utf8mb4_unicode_520_ci を使用する例
name
----
山田太郎
- 上記のサンプルコードは、あくまでも例です。実際の使用例に合わせて、コードを変更する必要があります。
MariaDB/MySQLにおける utf8mb4_unicode_ci と utf8mb4_unicode_520_ci 照合順序の違いを比較する他の方法
これらのドキュメントには、それぞれの照合順序の詳細な説明が記載されています。
比較ツールを使用する
https://www.diffchecker.com/ などのオンラインツールを使用して、2つの照合順序を比較することができます。
データベースを実際に作成して比較する
実際にデータベースを作成し、それぞれの照合順序を使用してデータの挿入と検索を行うことで、違いを体感することができます。
専門家に相談する
上記の方法で違いを理解できない場合は、データベースの専門家に相談することを検討してください。
- 照合順序は、データベースの重要な設定です。変更する前に、その影響を理解しておくことが重要です。
- 上記の情報は参考用です。実際の使用例に合わせて、情報を取捨選択する必要があります。
mysql unicode mariadb