오라클 SQL에서 LIKE 연산자는 자주 사용하는 구문 중 하나이다. 문자열에서 와일드카드(%)를 사용하여 원하는 문자가 포함된 자료를 쉽게 검색할 수 있다. 단순 검색 외에도 대문자 소문자 구분 없이 검색, NOT 연산자 사용, 여러 개의 문자를 검색, 언더바(_)를 사용하여 자릿수 검색 등 다양한 검색 방법이 있다.
( 1 ) 기본 사용
- 먼저 LIKE 는 WHERE 절에서 사용 된다.
예문 > liketest 의 name 에서 "A" 글자가 포함된 데이터의 seq 를 찾아라
SELECT seq
FROM liketest
WHERE name LIKE '%A%';
- 여기서 글자가 맨 앞에 위치했는지, 맨 뒤에 위치했는지 혹은 맨위/맨뒤/중간에 위치했는지를 와일드카드(%)의 위치로 필터링 할 수 있다.
A% ---- 'A' 로 시작하는 데이터
%A ---- 'A' 로 끝나는 데이터
%A% ---- 'A' 가 포함된 데이터
- 혹은 A 와 B 를 같이 검색하고 싶을 땐, %A%B%로 찾을 수 있다.
SELECT *
FROM emp
WHERE ename LIKE '%A%B%'
(2) 해당 문구만 제외한 데이터 검색( 반대 방법)
- NOT LIKE : LIKE 앞에 NOT 을 붙인다.
SELECT *
FROM LIKETEST
WHERE NAME NOT LIKE '%A%';
(3) 대소문자 구분 없이 사용
- LOWER (소문자로 조회 시) | UPPER(대문자로 조회 시)
- WHERE 뒤 에 사용 가능하며, 기존 WHERE 에 있던 조건은 괄호에 넣는다
SELECT *
FROM LIKETEST
WHERE LOWER(NAME) LIKE '%a%';
(4) 글자수 검색 (언더바 사용)
- 원하는 글자 수의 데이터를 검색한다.
- 언더바가 4개면 4자리 글자를 5개면 5자리 글자를..
SELECT *
FROM emp
WHERE ename LIKE '____' ;
- 또는 4글자 자리 수 중 마지막 글자가 R 인 사람을 찾을 수 있다.
SELECT *
FROM emp
WHERE ename LIKE '___R' ;
- 또는 세번째 글자 가 A 인 여러 자리의 데이터도 찾을 수 있다.
SELECT *
FROM emp
WHERE ename LIKE '__A%' ;
(5) 특수문자 조회 시
- 검색 시 특수문자 - % $ 등을 검색할 때가 있다.
- 이런경우에는 '% %' 안에 특수문자 앞에 임의의 특수문자를 넣어주면 된다. 단, 검색 시 사용되는 특수문자는 안됨
예) LIKE '%\_%' ESCAPE '\'
LIKE '%#_%' ESCAPE '#'
LIKE '%$_%' ESCAPE '$'
> 'A%' 가 포함된 특수문자 조회 방법
SELECT SEQ
FROM LIKETEST
WHERE NAME LIKE '%A\%%' ESCAPE '\';
(6) 여러개의 LIKE 사용
- WHERE 절에 AND 또는 OR 로 붙여 사용이 가능하다.
SELECT *
FROM LIKETEST
WHERE NAME LIKE '%A%'
AND NAME LIKE 'B%'
AND NAME NOT LIKE '%C%';
SELECT *
FROM emp
WHERE deptno IN (20, 30)
AND (job LIKE 'SALES%' OR
job LIKE 'MAN%' OR
job LIKE 'ANAL%')
- 또는 파이프라인으로도 검색이 가능하다 > LIKE IN 은 사용하지 못한다.
- REGEXP_LIKE 함수 사용
SELECT *
FROM liketest
WHERE REGEXP_LIKE (name, '^A|^B|^C');
- 관련 자세한 내용 https://gent.tistory.com/51
이외 공백/ 연속된 값 들 찾는 것은 아래 참고
https://lee-mandu.tistory.com/48#google_vignette
'SQL' 카테고리의 다른 글
[ORACLE] SQL - Sub Query (하위 쿼리) (0) | 2023.03.14 |
---|---|
[ORACLE] SQL - ORACLE 사용법 (0) | 2023.03.10 |
[ORACLE] Table 명령어 및 기본 개념 (0) | 2023.03.07 |