ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySQL - 패턴 매칭(LIKE, REGEXP)
    Database/MySQL 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

    'Database > MySQL' 카테고리의 다른 글

    MySQL - 조인(JOIN)  (0) 2023.02.23
    MySQL - 서브쿼리(Subquery)  (0) 2023.02.23
    MySQL - 데이터 조회(SELECT)  (0) 2023.02.22
    MySQL - 데이터 추가(INSERT), 수정(UPDATE), 삭제(DELETE)  (0) 2023.02.22
    MySQL - DB 구조 정의  (0) 2022.07.27

    댓글

Designed by Tistory.