개발 지식/[DBMS] Oracle

[Oracle] WHERE(4) - LIKE 연산자, ESCAPE

devGSP 2022. 4. 20. 08:00
반응형
이 게시물은 Database GUI Oracle SQL Developer의 아래 버전 정보를 기준으로 작성되었습니다.

Java(TM) 플랫폼 : 1.8.0_321
Oracle IDE : 4.1.5.21.78

 

설명

원하는 문자가 포함된 데이터, 자릿수를 설정한 데이터 검색 등에 사용

 

문법

SELECT ... FROM ... WHERE [컬럼명] (NOT) LIKE '문자열';

 

여기서 문자열 앞뒤로 아래의 기호를 붙여서 앞뒤로 포함된 문자열인지, 자릿수를 설정한 문자열인지를 설정할 수 있다. 구체적인 활용은 예시에 작성한 주석을 통해 살펴보자.

와일드카드(%) : 문자열이 존재하는 것이 앞인지 뒤인지 조회할 때 사용
언더바(_) : 문자열의 자릿수를 설정할 때 사용.

 

SELECT *
  FROM EMP
 WHERE JOB LIKE 'SALESMAN';
-- 'JOB'이 'SALESMAN'인 데이터를 조회

SELECT *
  FROM EMP
 WHERE ENAME LIKE 'S%';
-- 'ENAME'이 'S'로 시작하는 데이터를 조회
 
SELECT *
  FROM EMP
 WHERE ENAME LIKE '_L%';
-- 'ENAME'의 두 번째 글자가 'L'인 데이터를 조회
 
SELECT *
  FROM EMP
 WHERE ENAME NOT LIKE '%AM%';
-- 'ENAME'에 'AM' 문자열이 포함되지 않은 데이터를 조회
-- 테이블에서 'ADAMS', 'JAMES'가 조회에서 제외됨
 
SELECT *
  FROM EMP
 WHERE ENAME LIKE '%M%S%';
-- 'ENAME'에 'M'과 'S' 문자열이 포함된 데이터를 조회
 
SELECT *
  FROM EMP
 WHERE ENAME LIKE '_____';
-- 'ENAME'이 다섯 글자인 데이터를 조회(언더바 5개).

 

결과

SELECT *
  FROM EMP
 WHERE JOB LIKE 'SALESMAN';

w4_q1


SELECT *
  FROM EMP
 WHERE ENAME LIKE 'S%';

w4_q2


SELECT *
  FROM EMP
 WHERE ENAME LIKE '_L%';

w4_q3


SELECT *
  FROM EMP
 WHERE ENAME NOT LIKE '%AM%';

w4_q4


SELECT *
  FROM EMP
 WHERE ENAME LIKE '%M%S%';

w4_q5


SELECT *
  FROM EMP
 WHERE ENAME LIKE '_____';

w4_q6

 

만약 "%", "_"라는 문자열이 포함된 데이터를 검색하고 싶다면?

 

SELECT ... FROM ... WHERE [컬럼명] LIKE 'A\_A' ESCAPE '\';

 

SELECT ... FROM ... WHERE [컬럼명] LIKE 'A\%A' ESCAPE '\';

 

위와 같이 LIKE 뒤에 ESCAPE를 사용하여 방식으로 쿼리를 작성하면 된다.

반응형