>  기사  >  데이터 베이스  >  MySQL에서 스페인어 악센트에 대해 발음 구별 부호를 구분하지 않는 검색을 어떻게 수행할 수 있습니까?

MySQL에서 스페인어 악센트에 대해 발음 구별 부호를 구분하지 않는 검색을 어떻게 수행할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-02 02:28:30376검색

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 데이터 정렬을 사용할 수 있습니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.