>  기사  >  데이터 베이스  >  LIKE 연산자와 utf8_general_ci 인코딩을 사용하여 MySQL에서 대소문자를 구분하지 않고 검색하는 이유는 무엇입니까?

LIKE 연산자와 utf8_general_ci 인코딩을 사용하여 MySQL에서 대소문자를 구분하지 않고 검색하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-08 14:12:021054검색

Why is Case-Insensitive Searching in MySQL with LIKE Operator and utf8_general_ci Encoding Case-Sensitive?

MySQL의 대소문자 구분 없는 검색

이 게시물에서는 utf8_general_ci 인코딩 및 MyISAM 스토리지 엔진이 있는 테이블에서 LIKE 연산자를 사용하는 MySQL 쿼리의 문제를 살펴봅니다. 대소문자를 구분하여 검색합니다.

이 문제를 해결하려면 두 가지 권장 해결 방법이 있습니다.

1. 바이너리 문자열 사용:

LIKE 연산자에 BINARY 키워드를 추가하면 대소문자를 구분하지 않고 검색할 수 있습니다.

SELECT .... FROM .... WHERE `concatenated` LIKE BINARY '%SearchTerm%';

이 접근 방식은 바이너리 문자열을 강제하므로 다른 접근 방식보다 더 나은 성능을 발휘합니다. 비교하여 더욱 효율적으로 만듭니다.

2. COLLATE 사용:

또는 COLLATE 키워드를 사용하여 특정 정렬 규칙을 지정할 수 있습니다.

SELECT .... FROM .... WHERE `concatenated` like '%SearchTerm%' COLLATE utf8_bin;

utf8_bin 데이터 정렬을 사용하면 대소문자를 구분하지 않는 비교가 적용됩니다. 이 방법은 더 많은 유연성을 제공하지만 이진 문자열 접근 방식에 비해 성능에 약간의 영향을 미칠 수 있습니다.

위 내용은 LIKE 연산자와 utf8_general_ci 인코딩을 사용하여 MySQL에서 대소문자를 구분하지 않고 검색하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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