CONTENT
こんにちはSKです。
MySQLで全角、半角が入り混じった文字列を検索した際、狙ったデータが取得できずハマってしまいました。今回はその時の事象と原因、解決方法についてまとめてみました。
■テーブル
■SQL(半角スペース+文字列)
■ 結果の想定
■実際の結果
4件も取れてしまった・・・。
状況を整理すると以下の様子。
①半角スペースと全角スペースが区別されていない
②末尾のスペースが無視されている
■ 原因
照合順序が「utf8mb4_unicode_ci」だったため
①大文字小文字区別しない/半角全角を区別しない
②pad属性が「PAD SPACE」つまり末尾のスペースが無視される
となってしまっていた。
■解決策
照合順序を「utf8mb4_bin」に変更したら意図した検索結果になりました。末尾のスペースが無視される問題のみ解決したい場合は、演算子に「LIKE」を使うことで正確な文字列比較をしてくれるのでそのようにしてもOKです。