[MySQL] REGEXP and NOT REGEXP 패턴매칭 > db

본문 바로가기

db

[MySQL] REGEXP and NOT REGEXP 패턴매칭

페이지 정보

작성자 서방님 댓글 0건 조회 45회 작성일 15-01-20 10:37

본문

확장된 규칙 수식이라고 불리우는 REGEXP 패턴매칭에 대해 간단히 알아보겠습니다. 우선 다음과 같은 특징이 있습니다.

1. '.' 은 모든 단일 문자를 매치 시킨다. (= LIKE 에서 '_'와 같음)
2. 문자 클래스 [..]은 대괄호 안에 있는 모든 문자를 매치 시킨다.
 ex> [abc]는 'a', 'b', 'c'를 각각 매치 시킨다.
3. 문자 클래스에서 범위 지정은 대쉬('-')를 사용한다.
 ex> [0-9] 모든 숫자, [a-z] 모든 영문자 매치
4. 테스트되는 값이 있는 모든 곳에서 매칭을 한다.
 (LIKE는 전체 값에서만 패턴 매치를 진행한다.)
5. 처음이라는 토큰 '^' 와 끝이라는 토큰 '$' 가 있다.

 실제 사용되는 예제를 보며 쉽게 이해해 봅시다.

1. mysql> SELECT * FROM pet WHERE name REGEXP '^b';
 (= mysql> SELECT * FROM pet WHERE name LIKE 'b%'; )
 pet 테이블 name 컬럼에 b로 시작하는 모든 이름(name 컬럼)을 찾습니다.

2. mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b';
 바이너리 키워드로 인해 소문자 b로 시작하는 이름을 찾습니다.

3. mysql> SELECT * FROM pet WHERE name REGEXP 'fy$';
 (= mysql>  SELECT * FROM pet WHERE name LIKE '%fy'; )
 fy로 끝나는 이름을 찾습니다.

4. mysql> SELECT * FROM pet WHERE name REGEXP 'w';
 (= mysql> SELECT * FROM pet WHERE name LIKE '%w%'; )

5. mysql> SELECT * FROM pet WHERE name REGEXP '^.....$';
 (= mysql> SELECT * FROM pet WHERE name REGEXP '^{5}$'; )
 (= mysql> SELECT * FROM pet WHERE name LIKE '_____'; )
 5 글자로 된 이름을 찾는다.
 * {n}('repeat-n-times') 연산자를 사용했다.

 다음 문제를 고민해 보면 REGEXP를 사용해야 하는 이유를 생각해보세요.

Q) 첫 음절은 숫자로 시작하고 다음 음절은 문자로 시작되는 값을 검색하시오.

댓글목록

등록된 댓글이 없습니다.

Total 447건 1 페이지
게시물 검색

회원로그인

접속자집계

오늘
299
어제
446
최대
592
전체
38,817

그누보드5
Copyright © seobangnim.com All rights reserved.
자바스크립트를 활성화 하세요![ 브라우저에서 자바스크립트를 활성화하는 방법 ]