💾

MySQL の utf8mb4 の文字照合順序まとめ

2021/03/19に公開

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_csutf8mb4_bin といった感じか

Discussion