SQL

[ORACLE] LIKE 사용 방법

Journey Jeong 2023. 7. 26. 10:09

오라클 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