MySQL で発音記号を区別しない検索を実行するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-01 12:38:02
オリジナル
811 人が閲覧しました

How to Perform Diacritic Insensitive Searches in MySQL?

MySQL 発音記号を区別しない検索

アクセント記号を含むスペイン語の単語を扱う場合、発音記号を考慮しながら検索クエリを実行するのは困難な場合があります。この記事では、文字セットと照合順序の組み合わせを使用して、MySQL データベースで発音区別符号を区別しない検索を実行するソリューションを提供します。

提供される例:

$result = mysql_query("SELECT * FROM $lookuptable WHERE disabled = '0' AND name LIKE '%$q%' OR productCode LIKE '%$q%' LIMIT $sugglimit");
ログイン後にコピー

は、発音区別符号の違いを考慮していません。 「lapiz」を検索するときに、「lápiz」のような単語を含む結果を除外します。

発音記号を区別しないようにするには、MySQL コマンド SET NAMES を利用して、データベース接続の特定の文字セットと照合順序を指定できます。文字セットを latin1 に設定し、照合順序をアクセントを区別しない照合順序に設定すると、クエリはアクセント付きの単語とアクセントのない単語の両方に一致します。

例:

SET NAMES latin1;
SELECT 'lápiz' LIKE 'lapiz';
ログイン後にコピー

このクエリは 0 を返し、「lápiz」と「lapiz」が等しくないことを示します。

utf8 文字セットに切り替えると、

SET NAMES utf8;
SELECT 'lápiz' LIKE 'lapiz';
ログイン後にコピー

クエリは 1 を返し、これを示します。

パターンが UTF-8 文字列に一致することを明示的に指定するには、_utf8 プレフィックスを使用できます。

SET NAMES latin1;
SELECT _utf8'lápiz' LIKE _utf8'lapiz';
ログイン後にコピー

この例では、クエリlatin1 文字セットを明示的に使用している場合でも、1 が返され、発音記号が区別されないことが確認されます。

さらに理解するには、文字セットのサポートに関する MySQL ドキュメントを参照してください。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!