次の問題があります(mysql 5.0.70を使用)。
あるテーブルにはvarchar
、次のようなある種の数値を含むフィールドがあります。
"0303A342", "21534463", "35663CE3"
等。 照合は に設定されていutf8_general_ci
ます。
システムのユーザーがこの番号の一部を含むレコードを検索しようとすると、問題が発生します。SQLクエリは次のようになります
...
WHERE 'number' LIKE '%0303A%'
LIKE 部分の 'A' が A として入力されたLatin
場合、結果には A を含むレコードのみが含まれますLatin
。A が のCyrillic
場合、結果は再び A を含む行のみになりますCyrillic
。E、C、B、T など、他にも多くの文字があります。
ここで私の質問は、SQLクエリを変更して、そのLIKE '%0303A%'
部分に一致するすべての行を返す方法があるかどうかですが、そこにあるすべての種類のA`に対してですか? または、データベースを挿入/更新する前にユーザー入力を変換する必要がありますか?