いまさら気づいたのですが,Mysql はデフォルトでは検索する際に,大文字と小文字を区別しないようです。
参考サイト:MySQLで大文字小文字を区別させる
他にもたくさんの記事があった。大文字小文字を区別するように,採用したやり方は,
WHERE name = BINARY '検索したい文字列'
上記のように,BINARY
を加えました。
binary は phpadmin で直接実行してみると警告がある。
select * from `テーブル名` WHERE 列の名前 = binary '探したいもの'
上記を実行すると,下のようなメッセージが来る。
Warning: #1287 'BINARY expr' は将来のリリースで廃止予定です。代わりに CAST を使用してください。
何れは修正する必要がありそう。
この binary をつけた検索で上手くいく場合と,上手く行かないデータベースがあった。実際に動かしている環境では上手く動いて検索できるのだが,開発用の環境では上手く検索できなかった。この場合,見つからないという検索結果となっていた。同じコードで結果が異なるので,不思議なことではあったが,これはデータベースを作成する際の照合順序の設定と関連していた。
この設定が異なっていたので,開発環境での検索が上手く機能していなかった。utf8mb3_general_ci
に変更した。_ci
は検索時に大文字と小文字が区別されない。_cs
は区別されるようだ。_cs
へ変更すれば,SQL を変えなくても検索が上手く行きそうだが,これは試していない。