오라클 LIKE 연산자에 대해 알아보자.
LIKE라는 영어는 같은, ~와 비슷한 등의 의미를 가지고 있는데,
그 의미 그대로 비슷한 내용을 검색하는데 사용되는 연산자이다.
구문은 아래와 같다.
▷ [구문 - 1 ] '%'
WHERE [컬럼명] LIKE '%검%색%어%'
위 구문에서 사용된 '%'는 "0개 이상의 문자로 길이와 상관이 없다." 라는 의미를 가진다.
1) 앞자리가 ze로 시작하는 문자열 : 'ze%' (앞에가 ze로 시작하는 모든 값들을 가져와라.)
2) 뒷자리가 com으로 끝나는 문자열 : '%com' (com으로 끝나는 모든 값들을 가져와라.)
3) 문장중에 a와 n을 포함하는 문자열 : '%a%n%' (어느 위치에 있는지 모르겠지만, 문장중에 a와 n을 포함하는 모든 값들을 가져와라.)
예제 1) '%' 사용한 LIKE 연산자
SELECT * FROM employees WHERE email LIKE 'ze%';
SELECT * FROM employees WHERE email LIKE '%com';
--앞뒤로 뭐가 오든 상관없는데 '재' 를 포함하는 모든 값을 가져와라.
SELECT * FROM employees WHERE first_name LIKE '%재%';
추가적으로 '%' 이 표시 말고도 하나 더 사용하는 표시가 있는데, 언더바('_') 이다.
▷ [구문 - 2 ] '_'
WHERE [컬럼명] LIKE '_검_색_어_'
위 구문에서 사용된 '_'는 "한자리만 임의의 문자를 허용한다." 라는 의미를 가진다.
1) 앞자리가 H로 시작하는 두자리 문자열 : 'H_' (앞에가 H로 시작하는 길이가 2인 모든 값들을 가져와라.)
2) 뒷자리가 com으로 끝나는 문자열 : '__com' (com으로 끝나고 com앞에 두자리가 붙어있는 모든 값들을 가져와라.)
예제 2) '-' 사용한 LIKE 연산자
SELECT * FROM employees WHERE email LIKE 'ze_';
SELECT * FROM employees WHERE email LIKE '__com';
LIKE 연산자의 기본 구문들에 대해 배워봤는데,
'%' 와 '_' 표현식은 각각 길이의 제한이 없는 조건, 한자리만을 무시해주는 조건을 의미한다.
그리고 추가적으로 '%' 와 '_' 표현식은 여러개로 조합하여 사용이 가능하다.
예제 3) '%' 와 '-' 를 동시 사용한 LIKE 연산자
SELECT * FROM employees WHERE email LIKE '_com%';
몇가지 LIKE 를 사용한 예제를 좀 더 알아보자.
예제 4) LIKE의 반대 NOT LIKE 연산자
SELECT * FROM employees WHERE email NOT LIKE '%com';
그냥 단순하게 LIKE의 반대라고 생각하면 된다.
예제 5) 다중 LIKE 연산자
-- OR을 사용한 다중 LIKE 연산자
SELECT * FROM employees WHERE (name LIKE '%한%' OR name LIKE '%은%')
-- 정규식을 사용한 다중 LIKE 연산자 (REGEXP_LIKE)
SELECT * FROM employees WHERE REGEXP_LIKE( name , '한|김|피');
정규식 표현법에 대해서는 따로 찾기를 권장한다.
'%' 와 '_'에 대해 ESCAPE를 알아두면 좋으니 아래 글도 한번 봐주도록 하자.
https://mine-it-record.tistory.com/101
댓글