반응형
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
반응형
'SQL > MySQL' 카테고리의 다른 글
MySQL 쿼리 히스토리 확인방법 (0) | 2021.01.21 |
---|---|
MySQL DB LOCK 해결방법 (0) | 2021.01.21 |
MySQL COALESCE 함수 사용방법 (0) | 2021.01.21 |
MySQL 테이블 컬럼 코멘트 추가 수정 삭제 조회방법 (0) | 2021.01.21 |
MySQL 테이블 컬럼 코멘트 조회 방법 (0) | 2021.01.21 |
댓글