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