ホームページ > データベース > mysql チュートリアル > MySQL でアクセントを区別した検索を実行するにはどうすればよいですか?

MySQL でアクセントを区別した検索を実行するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-10 04:12:13
オリジナル
994 人が閲覧しました

How Can I Perform Accent-Sensitive Searches in MySQL?

アクセントを区別する MySQL 検索: 総合ガイド

アクセント記号の区別は、特に発音記号を含む文字を検索する場合に、MySQL クエリで問題を引き起こす可能性があります。この記事では、MySQL におけるアクセントを区別するクエリの微妙な違いを調査し、実用的な解決策を提供します。

アクセントを区別しないクエリの問題

UTF-8 テーブル内の 2 つのエントリについて考えてみましょう。 :「アバド」と「アバード」。 「abád」を検索するクエリでは、デフォルトの照合順序でアクセントが区別されないため、「abad」が返される場合もあります。

ソリューション

1。列の照合順序

アクセントの区別を保証するには、アクセント付き文字とアクセントなし文字を区別する照合順序を指定します。例:

ALTER TABLE words MODIFY `word` VARCHAR(10) COLLATE utf8_bin;
ログイン後にコピー

2. BINARY 演算子

アクセント付きの単語の完全一致を検索する場合は、BINARY 演算子を使用します:

SELECT * FROM `words` WHERE BINARY `word` = 'abád';
ログイン後にコピー

3。 COLLATE 句

MySQL 8.0 以降では、COLLATE 句を使用して比較のための特定の照合順序を指定できます:

SELECT * FROM `words` WHERE `word` = 'abád' COLLATE utf8mb4_bin;
ログイン後にコピー

4。言語固有の照合順序

言語で特定のアクセント処理が必要な場合は、utf8_polish_ci や latin1_swedish_ci などの言語固有の照合順序の使用を検討してください。

補足事項

  • BINARY 演算子は比較のみを行います実際のバイト値であり、大文字と小文字が区別されます。
  • COLLATE 句は列の照合順序よりも優先されます。
  • データを別の照合順序に変換する場合は、CONVERT() 関数を使用します。
  • MySQL 8.0 は、デフォルトの文字セットとして utf8mb4 を使用します。これは、より広範囲の文字をサポートしており、より推奨されます。 utf8.

これらのソリューションを実装することで、MySQL クエリで必要なアクセントの区別を実現し、アクセント付き文字の正確な検索結果を保証できます。

以上がMySQL でアクセントを区別した検索を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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