💾
MySQL の utf8mb4 の文字照合順序まとめ
MySQL で文字コードを utf8mb4 を使うことになったので、照合順序を決めるための自分用メモです
巷にたくさん記事はあるけど、現時点(2021/03)でまとめておきたかった
条件
- MySQL バージョン: 8.0.22
- OS: MacOS
- クライアント: MySQL Workbench
確認手法
次のクエリを実行する。照合順序だけ変更して確認
SELECT
'はは' <> 'ハハ' COLLATE utf8mb4_bin,
'びょういん' <> 'びよういん' COLLATE utf8mb4_bin,
'はは' <> 'ぱぱ' COLLATE utf8mb4_bin,
'ハハ' <> 'ハハ' COLLATE utf8mb4_bin,
'A' <> 'a' COLLATE utf8mb4_bin,
'🍣' <> '🍺' COLLATE utf8mb4_bin
;
確認結果
日本語で使えそうな照合順序ものだけ
照合順序 | はは ≠ ハハ | びょういん ≠ びよういん | はは ≠ ぱぱ | ハハ ≠ ハハ | A ≠ a | 🍣 ≠ 🍺 | 備考 |
---|---|---|---|---|---|---|---|
utf8mb4_bin | T | T | T | T | T | T | |
utf8mb4_general_ci | T | T | T | T | F | F | 5.7 default |
utf8mb4_0900_ai_ci | F | F | F | F | F | T | 8.0 default |
utf8mb4_0900_as_ci | F | F | T | F | F | T | |
utf8mb4_0900_as_cs | T | T | T | T | T | T | |
utf8mb4_ja_0900_as_cs | F | T | T | F | T | T | |
utf8mb4_ja_0900_as_cs_ks | T | T | T | F | T | T |
拗音(ょ)や濁音(ば)・半濁音(ぱ)の区別ができないの問題なので、候補は次になりそう
- utf8mb4_bin
- utf8mb4_general_ci
- utf8mb4_ja_0900_as_cs
5.6 系から互換性保つなら utf8mb4_general_ci
、日本語だけなら utf8mb4_ja_0900_as_cs
、utf8mb4_bin
といった感じか
Discussion