[Oracle] 특정 문자열 포함 여부 확인 (LIKE, INSTR)

오라클에서 특정 문자열의 포함 여부를 확인할 때 LIKE 연산자와 INSTR 함수를 사용한다. LIKE 연산자는 조건절(WHERE)에서 특정 문자열이 포함된 데이터를 찾을 때 사용하며, INSTR 함수는 특정 문자열이 포함된 위치를 반한 하므로 특정 문자열을 자를 때 많이 사용한다.

 

오라클 특정 문자열 포함 여부 확인

 

LIKE 연산자를 사용하여 문자열 포함 여부 확인

SELECT *
  FROM emp
 WHERE ename LIKE '%MI%'

 

 

LIKE 연산자는 조건절(WHERE)에서 컬럼에 특정 문자열이 포함되었는지 확인할 때 많이 사용한다.

문자열을 찾으면 true, 못찾으면 false를 반환한다.

 

CASE 표현식에 사용

SELECT empno
     , ename
     , CASE WHEN ename LIKE '%MI%' THEN 'Y'
            ELSE 'N'
       END AS "포함여부"
  FROM emp
 WHERE JOB = 'CLERK'

 

 

LIKE 연산자는 true, false를 반환하므로 CASE 표현식에 사용이 가능하다.

PL/SQL의 IF 문에서도 사용이 가능하다.

 

INSTR 함수를 사용하여 문자열 포함 여부 확인

SELECT *
  FROM emp
 WHERE INSTR(ename, 'MI') > 0

 

 

INSTR 함수는 특정 문자열을 찾은 위치를 정수형(숫자)으로 반환한다.

문자열을 찾으면 1이상, 못 찾으면 0을 반환한다.

 

조건절(WHERE)에서 문자열을 찾을 때 LIKE 연산자를 사용하는 것이 좋으며, INSTR 함수를 조건으로 사용해도 문제는 없으나 조건에 사용하는 컬럼이 인덱스 컬럼인 경우 속도에 영향이 있을 수 있으므로 확인 후 사용해야 한다.

 

CASE 표현식에 사용

SELECT empno
     , ename
     , INSTR(ename, 'MI')
     , CASE WHEN INSTR(ename, 'MI') > 0 THEN 'Y'
            ELSE 'N'
       END AS "포함여부"
  FROM emp
 WHERE JOB = 'CLERK'

 

 

INSTR 함수는 문자열을 찾은 위치를 정수형으로 반환하므로 CASE 표현식 외에도 DECODE, SUBSTR 함수 등 조금 더 다양한 연산에 활용이 가능하다.

 

문자열 자르기

SELECT empno
     , ename
     , INSTR(ename, 'M')
     , SUBSTR(ename, INSTR(ename, 'M'), 2)
  FROM emp
 WHERE JOB = 'CLERK'

 

 

INSTR 함수는 문자열을 자를때 많이 사용된다.

위의 예제는 성명(ename)에서 특정 문자("M")의 위치를 찾은 후 해당 위치에서 2자리의 문자를 자르는 방법이다.

 

예제쿼리(테이블포함).txt
0.00MB

 

LIKE 연산자와 INSTR 함수에 대해서 조금 더 자세히 알고 싶다면 아래의 포스팅을 읽어보면 된다.

 

[Oracle] 오라클 LIKE 사용법 완벽 정리 (여러개, 패턴, 대소문자)

오라클 SQL에서 LIKE 연산자는 자주 사용하는 구문 중 하나이다. 문자열에서 와일드카드(%)를 사용하여 원하는 문자가 포함된 자료를 쉽게 검색할 수 있다. 단순 검색 외에도 대문자 소문자 구분

gent.tistory.com

 

[Oracle] 오라클 INSTR 함수 사용법 완벽 정리 (CHARINDEX, IndexOf)

오라클에서는 문자열에서 원하는 문자를 찾을 때 INSTR 함수를 사용한다. INSTR 함수는 대소문자를 구별하여 문자를 검색하며, 여러 개의 문자를 찾을 때는 OR 연산자를 사용하면 된다. 해당 문자를

gent.tistory.com

 

 

댓글

Designed by JB FACTORY