-
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