Database/MySQL
MySQL - 패턴 매칭(LIKE, REGEXP)
임빈영
2023. 2. 22. 16:03
패턴 매칭(LIKE, REGEXP)
LIKE
SELECT
*
FROM
MEMBER
WHERE
NAME LIKE '홍%';
- LIKE 연산자는 특정 패턴을 포함하는 데이터만을 검색하기 위해 사용된다.
- 위 예제는 MEMBER 테이블에서 '홍'으로 시작하는 이름(NAME)을 가진 레코드를 조회하기 위한 예제이다.
SELECT
*
FROM
MEMBER
WHERE
NAME NOT LIKE '홍%';
- 만약, 특정 패턴을 포함하지 않는 데이터를 검색하고 싶을 때는 NOT LIKE 연산자를 사용하면 된다.
- 위 예제는 MEMBER 테이블에서 '홍'으로 시작하지 않은 이름(NAME)을 가진 레코드를 조회하기 위한 예제이다.
와일드카드
와일드카드 | 설명 |
% | 0개 이상의 문자를 대체한다. |
_ | 1개의 문자를 대체한다. |
- 와일드카드란 문자열 내에서 임의의 문자나 문자열을 대체하기 위해 사용되는 기호를 의미한다.
- MySQL에서 사용할 수 있는 와일드카드 문자는 위와 같다.
SELECT
*
FROM
MEMBER
WHERE
AGE LIKE '2_';
- 위 예제는 AGE 필드값이 2로 시작하고, 바로 뒤의 한 자리의 숫자가 더 나오는 레코드를 조회하는 예제이다.
REGEXP
패턴 | 설명 |
. | 줄 바꿈 문자(\n)를 제외한 임의의 한 문자를 의미한다. |
* | 해당 문자 패턴이 0번 이상 반복된다. |
+ | 해당 문자 패턴이 1번 이상 반복된다. |
^ | 문자열의 처음을 의미한다. |
$ | 문자열의 끝을 의미한다. |
| | '또는'을 의미한다. |
[...] | 괄호([]) 안에 있는 어떠한 문자를 의미한다. |
[^...] | 괄호([]) 안에 있지 않은 어떠한 문자를 의미한다. |
{n} | 반복되는 횟수를 지정한다. |
{m, n} | 반복되는 횟수의 최솟값과 최댓값을 지정한다. |
- LIKE 연산자보다 더욱 복잡한 패턴을 검색하고 싶을 때 REGEXP 연산자를 사용할 수 있다.
- REGEXP 연산자는 정규 표현식을 토대로 하는 패턴 매칭 연산을 제공하며, REGEXP 연산자와 함께 사용할 수 있는 패턴을 위와 같다.
SELECT
*
FROM
MEMBER
WHERE
NAME REGEXP '^홍|동$';
- 위 예제는 MEMBER 테이블 내의 NAME 필드 값이 '홍'으로 시작하거나, '동'으로 끝나는 레코드를 조회하는 예제이다.
SELECT
*
FROM
MEMBER
WHERE
NAME NOT REGEXP '^홍|산$';
- 만약, 해당 패턴과 일치하지 않는 데이터를 조회하고 싶을 때는 NOT REGEXP 연산자를 사용하면 된다.
출처
ㆍ http://www.tcpschool.com/mysql/mysql_operator_patternMatching
728x90