본문 바로가기
SQL/MySQL

MySQL LIKE REGEXP(LIKE IN) 사용방법

by wakestand 2021. 1. 21.
반응형

MySQL에서 LIKE는 특정 문자를 포함하고 있는지 확인할 때

WHERE 절에서 사용하게 되는데 

 

WHERE 컬럼명 LIKE '%값%'

이렇게 값에 %를 붙이는 식으로 컬럼에 적용시킨다

 

'값%' 은 값으로 시작하는 경우만  

'%값' 은 값으로 끝나는 경우만 

'%값%' 은 값이 들어가는 경우 전체

로 적용되게 된다

 

예제에 바로 사용 가능한 쿼리는 아래와 같다

 

WITH TBL AS -- 가상테이블
(
    SELECT '김철수' AS NAME
    UNION ALL
    SELECT '김영희' AS NAME
    UNION ALL
    SELECT '최희영' AS NAME    
)

-- 값% 으로 사용 시 > 값으로 시작하는 경우만
SELECT * 
  FROM TBL
 WHERE NAME LIKE '김%';

-- %값 으로 사용 시 > 값으로 끝나는 경우만
SELECT * 
  FROM TBL
 WHERE NAME LIKE '%수';
 
-- %값% 으로 사용 시 > 값이 들어가는 경우 전체
SELECT * 
  FROM TBL
 WHERE NAME LIKE '%수%';

다음은 REGEXP, REGEXP_LIKE 를 사용해

LIKE IN 느낌으로

LIKE 검색을 여러개로 적용시킬 수 있는데

REGEXP의 경우에는

WHERE 컬럼명 REGEXP '정규식'

 

REGEXP_LIKE의 경우에는

WHERE REGEXP_LIKE(컬럼명, '정규식')

 

이렇게 사용해주면 된다

둘 중에 어느걸 사용해도 상관없지만 REGEXP가

옛날 버전에도 호환이 되기 때문에

REGEXP를 사용하는 쪽을 권장한다

 

정규식의 전체 사용법은 다음과 같은데

. : 문자 하나
* : 앞 글자의 *개수 숫자 이상 반복
^ : 첫값
$ : 끝값
[.] : 괄호 안의 문자열 일치 확인
{.} : 반복
| : or 

 

위와 같이 사용해주면 되는데

보면 뭔 말인지 감이 안온다

 

LIKE IN 처럼 사용하려면

WHERE 컬럼명 REGEXP '값|값';

 이렇게 사용해주면 되고

정규식을 이용한 다양한 사용방법은

아래 쿼리를 확인해주면 된다

 

WITH TBL AS -- 가상테이블
(
    SELECT '김철수' AS NAME
    UNION ALL
    SELECT '김영희' AS NAME
    UNION ALL
    SELECT '최수철' AS NAME   
    UNION ALL
    SELECT '111' AS NAME
)

-- 영 or 최가 들어간 값 조회 
SELECT * 
  FROM TBL
 WHERE NAME REGEXP '영|최';
 
-- 정규식을 이용해 숫자가 들어간 값만 조회
SELECT *
  FROM TBL
 WHERE NAME REGEXP '^[0-9]+$';

-- 정규식을 이용해 최로 시작하고 한글로 끝나는 값만 조회
SELECT *
  FROM TBL
 WHERE NAME REGEXP '^최[가-힇]+$';

-- 정규식 리스트
. : 문자 하나
* : 앞 글자의 *개수 숫자 이상 반복
^ : 첫값
$ : 끝값
[.] : 괄호 안의 문자열 일치 확인
{.} : 반복
| : or
 
반응형

댓글