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 중국어 웹사이트의 기타 관련 기사를 참조하세요!