>  기사  >  데이터 베이스  >  스페인어 악센트에 대해 MySQL에서 분음 부호를 구분하지 않는 검색을 수행하는 방법은 무엇입니까?

스페인어 악센트에 대해 MySQL에서 분음 부호를 구분하지 않는 검색을 수행하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-01 07:48:31476검색

How to Perform Diacritic Insensitive Search in MySQL for Spanish Accents?

스페인어 악센트에 대한 MySQL 분음 부호를 구분하지 않는 검색

악센트 문자가 포함된 데이터를 처리할 때 둔감하게 유지되는 효과적인 검색을 수행하는 것이 어려울 수 있습니다. 분음 부호에. 이는 특히 단어에 악센트(á, é, í, ó, ú)가 포함되는 스페인어와 같은 언어에 적합합니다.

문제:

다음과 같은 데이터베이스 쿼리 "SELECT * FROM table WHERE word LIKE '%word%'"는 검색어에 "lápiz" 대신 "lapiz"와 같이 다양한 악센트 변형이 포함된 경우 정확한 결과를 반환하지 않을 수 있습니다.

해결책 : 문자 집합 및 데이터 정렬

발음 부호를 구분하지 않는 검색을 활성화하려면 데이터베이스 연결에 적합한 문자 집합과 데이터 정렬을 설정하는 것이 중요합니다. MySQL에서는 다음 명령을 사용하여 이를 수행할 수 있습니다.

SET NAMES latin1;

또는

SET NAMES utf8;

"latin1" 문자 집합은 일반적으로 제한된 수의 스페인어와 같은 언어에 사용됩니다. 악센트가 있는 문자로 구성됩니다. "utf8"은 더 넓은 범위의 악센트 문자를 지원하는 보다 포괄적인 문자 집합입니다.

문자 집합이 설정되면 다음 구문을 사용하여 발음 구별 부호를 구분하지 않는 검색을 수행할 수 있습니다.

SELECT * FROM table WHERE word LIKE _utf8'search_term'

예:

mysql> SET NAMES latin1;
mysql> SELECT 'lápiz' LIKE 'lapiz';
+-----------------------+
| 'lápiz' LIKE 'lapiz' |
+-----------------------+
|                     0 | 
+-----------------------+

이 예에서 "lapiz"를 검색하면 "latin1" 문자 집합이 분음 부호를 상호 교환 가능한 것으로 간주하지 않기 때문에 "lápiz"가 반환되지 않습니다.

mysql> SET NAMES utf8;
mysql> SELECT 'lápiz' LIKE 'lapiz';
+-----------------------+
| 'lápiz' LIKE 'lapiz' |
+-----------------------+
|                     1 | 
+-----------------------+

그러나 "utf8" 문자 집합을 사용하면 분음 부호를 구분하지 않기 때문에 검색 시 "lápiz" 및 "lapiz"가 정확하게 일치합니다.

위 내용은 스페인어 악센트에 대해 MySQL에서 분음 부호를 구분하지 않는 검색을 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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