MySQL でスペイン語アクセントの発音記号を区別しない検索を実行するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-02 02:28:30
オリジナル
375 人が閲覧しました

How can I perform diacritic insensitive searches for Spanish accents in MySQL?

MySQL: スペイン語アクセントの発音記号を区別しない検索

MySQL データベースでは、検索を実行するときにスペイン語アクセントを持つ単語を管理することが困難になる場合があります。この記事では、アクセント記号を区別しない検索を実現するためのソリューションを提供し、必要に応じてアクセントの有無にかかわらず単語を取得できるようにします。

アクセントを使用したクエリ

例として、以下のクエリ:

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

このクエリは、検索語 $q の name フィールドと productCode フィールドの両方をチェックします。ただし、アクセント付きの単語を除いて、完全一致のみが返されます。

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

発音記号を区別しない検索を実現するには、文字セットと照合順序を利用できます。照合順序は文字の比較方法を定義し、一部の照合順序では発音記号が区別されません。

文字セットの変更

文字セットを変更することで、照合順序を変更し、発音記号を有効にすることができます。鈍感な検索。例:

SET NAMES latin1;
ログイン後にコピー

クエリのテスト

文字セットを変更した後、クエリを再実行して結果をテストできます:

mysql> SET NAMES latin1;
mysql> SELECT 'lápiz' LIKE 'lapiz';
+-----------------------+
| 'lápiz' LIKE 'lapiz' |
+-----------------------+
|                     0 | 
+-----------------------+
ログイン後にコピー

ご覧のとおり、単語「'lápiz'」にアクセントが含まれているにもかかわらず、クエリは 0 を返します。これは、文字セットが latin1 に設定されており、大文字と小文字が区別され、発音記号が区別されるためです。

UTF-8 照合順序の使用

発音記号を区別しない検索を有効にするには、次のようにします。 UTF-8 照合順序を使用できます。 Unicode Transformation Format (UTF) は、マルチバイト文字と発音記号を処理する文字エンコード スキームです。

SET NAMES utf8;
ログイン後にコピー

UTF-8 文字セットを使用してクエリを再実行します:

mysql> SET NAMES utf8;
mysql> SELECT 'lápiz' LIKE 'lapiz';
+-----------------------+
| 'lápiz' LIKE 'lapiz' |
+-----------------------+
|                     1 | 
+-----------------------+
ログイン後にコピー

現在、クエリは 1 を返し、検索が発音記号を区別しないことを示しています。

追加の考慮事項

任意の文字セットに対して発音記号を区別しない検索を保証するには、UTF を指定できます。 -8 照合順序を明示的に指定します:

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

これにより、現在の文字セットに関係なく、比較に UTF-8 照合順序が使用されることが保証されます。

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

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