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