Open1

データベース周り

ただのとりただのとり

MySQLで実行したクエリの結果がなんだかおかしい件(照合順序大事)

何が起きたか

  • 新しく作ったテーブルのクエリの結果がなんだかおかしい

  • ひらがな/カタカナを区別していない

  • 半角/全角を区別していない

  • なんでや…

    SELECT * FROM users WHERE name = 'テスト';
    
 ▫️結果
  | テスト |
  | てすと |  <---なんでや…
SELECT * FROM users WHERE name = 'abc';
 ▫️結果
  | abc |
  | Abc |  <---なんでや…

原因

  • MySQLの「照合順序(collations)」がデフォルトのutf8mb4_0900_ai_ciになっており、作成時に指定しなかったため

utf8mb4_0900_ai_ciとは

https://qiita.com/seltzer/items/8b5d8a61591e72715d5b

  • 要はひらがな/カタカナや「は」と「ぱ」などは同じ扱いにされてしまうよう
  • 日本語に優しくない…

対応

  • バイナリソート(utf8mb4_bin)に変えよう