ホームページ > データベース > mysql チュートリアル > MySQL の LIKE 演算子でバイナリ文字列を使用するときに大文字と小文字が区別されるのはなぜですか?

MySQL の LIKE 演算子でバイナリ文字列を使用するときに大文字と小文字が区別されるのはなぜですか?

Barbara Streisand
リリース: 2024-11-07 19:00:03
オリジナル
517 人が閲覧しました

Why is MySQL's LIKE Operator Case Sensitive When Using a Binary String?

MySQL での LIKE での大文字と小文字の区別

クエリ「SELECT concat_ws(title,description) as concatenated」を使用して MySQL で LIKE 検索を実行するときLIKE '%SearchTerm%';" を連結すると、テーブルが utf8_general_ci 照合順序と MyISAM ストレージ エンジンを使用してエンコードされているにもかかわらず、検索では大文字と小文字が区別されることがわかります。

この動作の理由は次のとおりです。 LIKE 演算子は、オペランドのいずれかがバイナリ文字列の場合、大文字と小文字を区別した比較を実行します。この場合、「連結」フィールドはバイナリ文字列であるため、検索では大文字と小文字が区別されます。

この問題を解決して検索で大文字と小文字を区別しないようにするには、BINARY キーワードを LIKE とともに使用することをお勧めします。演算子:

SELECT .... FROM .... WHERE `concatenated` LIKE BINARY '%SearchTerm%';
ログイン後にコピー

これにより、大文字と小文字の違いを無視して、文字列比較がバイナリ単位で実行されるようになります。

あるいは、COLLATE キーワードを utf8_bin 照合順序とともに使用して、 search case-insensitive:

SELECT ....
FROM ....
WHERE `concatenated` like '%SearchTerm%' COLLATE utf8_bin;
ログイン後にコピー

これらのメソッドは両方とも、検索動作を効果的に変更し、utf8_general_ci 照合順序のパフォーマンス上の利点を維持しながら、大文字と小文字を区別しないようにします。

以上がMySQL の LIKE 演算子でバイナリ文字列を使用するときに大文字と小文字が区別されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート