ホームページ  >  記事  >  データベース  >  MySQL で発音記号を区別しない検索を実行するにはどうすればよいですか?

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

Susan Sarandon
Susan Sarandonオリジナル
2024-11-01 12:38:02906ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。