>  기사  >  데이터 베이스  >  mysql에서 정규식을 사용하여 검색하는 방법에 대한 튜토리얼(1)

mysql에서 정규식을 사용하여 검색하는 방법에 대한 튜토리얼(1)

巴扎黑
巴扎黑원래의
2017-05-02 18:17:591569검색

이 주제에서는 MySQL where 절에서 정규식을 사용하여 데이터 필터링을 제어하는 ​​방법을 알아봅니다.

정규식 소개

처음 두 장의 필터링 예에서는 일치, 비교 및 ​​와일드카드 연산자를 사용하여 데이터를 찾을 수 있습니다. 기본 필터링(또는 기본이 아닌 필터링)의 경우 이것으로 충분합니다. 그러나 필터 조건의 복잡성이 증가함에 따라 where 절 자체의 복잡성도 증가합니다.

정규 표현식이 유용한 곳은 바로 여기입니다. 정규식은 텍스트를 일치시키는 데 사용되는 특수 문자열(문자 집합)입니다. 텍스트 파일에서 전화번호를 추출하려면 정규식을 사용할 수 있습니다. 이름 중간에 숫자가 있는 모든 파일을 찾으려면 정규식을 사용할 수 있습니다. 텍스트 섹션에서 반복되는 모든 단어를 찾으려면 정규식을 사용할 수 있습니다. 페이지의 모든 URL이 해당 URL의 실제 HTML 링크가 되도록 하려면 정규식을 사용할 수도 있습니다.

모든 프로그래밍 언어, 텍스트 편집기, 운영 체제 등은 정규식을 지원합니다. 프로그래머와 네트워크 관리자는 오랫동안 기술 도구의 중요한 부분으로 정규식에 관심을 가져왔습니다.

정규식은 방금 설명한 모든 작업을 수행하는 데 사용되는 특수 언어인 정규식 언어를 사용하여 생성됩니다. 다른 언어와 마찬가지로 정규식에도 특수 구문과 지침이 있습니다.

정규 표현식이 이렇게 유용한데, 정규 표현식과 MySQL은 어떤 관계인가요? 앞서 언급했듯이 정규식의 기능은 패턴(정규식)을 텍스트 문자열과 비교하여 텍스트를 일치시키는 것입니다. MySQL은 where 절을 사용하여 정규식에 대한 예비 지원을 제공하므로 정규식을 지정하여 select로 검색된 데이터를 필터링할 수 있습니다.

MySQL 정규식을 사용한 기본 문자 일치

아주 간단한 예부터 시작합니다. 다음 문은 prod_name 열에 텍스트 1000이 포함된 모든 행을 검색합니다.

prod_name regexp '1000' order by prod_name이 있는 제품에서 prod_name을 선택합니다.

mysql에서 정규식을 사용하여 검색하는 방법에 대한 튜토리얼(1)

제외 key 이 명령문은 like라는 단어가 regexp로 대체된다는 점을 제외하면 like를 사용하는 명령문과 매우 유사합니다. 이는 regexp 뒤에 오는 내용이 정규식(텍스트 본문 1000과 일치하는 정규식)으로 처리됨을 MySQL에 알려줍니다.

왜 굳이 정규식을 사용해야 할까요? 이전 예에서 정규식은 실제로 큰 이점을 가져오지 않았지만 다음 예를 고려하십시오.

prod_name regexp '.000'order by prod_name;

mysql에서 정규식을 사용하여 검색하는 방법에 대한 튜토리얼(1)

여기서는 정규식 .000을 사용합니다. .은 정규식 언어의 특수 문자입니다. 이는 모든 문자와 일치한다는 의미이므로 1000과 2000이 모두 일치하여

을 반환합니다. 물론 이 특별한 예는 like 및 와일드카드 문자를 사용하여 완성할 수도 있습니다.

좋아요와 정규식 사이에는 중요한 차이점이 있습니다. 다음 두 가지 설명을 살펴보십시오.

prod_name이 prod_name별로 '1000' 주문을 하는 제품에서 prod_name을 선택합니다.

prod_name regexp '1000'이 prod_name별로 주문하는 제품에서 prod_name을 선택합니다.

위의 두 문을 실행하면 첫 번째 문은 데이터를 반환하지 않지만 두 번째 문은 행을 반환하는 것을 알 수 있습니다. 이유는 무엇입니까?

like는 전체 열과 일치합니다. 일치하는 텍스트가 열 값에 나타나면 like는 이를 찾지 못하고 해당 행이 반환되지 않습니다(와일드카드를 사용하지 않는 한). 그리고 regexp는 열 값 내에서 일치합니다. 일치하는 텍스트가 열 값에 나타나면 regexp가 이를 찾아 해당 행을 반환합니다. 이것은 매우 중요한 차이점입니다.

그렇다면 regexp를 사용하여 전체 열 값을 일치시키고 like와 동일한 역할을 할 수 있습니까? 답은 정해져 있습니다. ^ 및 $ 위치 지정자를 사용하면 됩니다.

위 내용은 mysql에서 정규식을 사용하여 검색하는 방법에 대한 튜토리얼(1)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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