오라클에서 특정 문자열의 포함 여부를 확인할 때 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') > 0INSTR 함수는 특정 문자열을 찾은 위치를 정수형(숫자)으로 반환한다.
문자열을 찾으면 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
● SELECT [컬럼명] FROM [테이블명] WHERE [컬럼명] LIKE '특정문자열%'
<example>
▶ '김' 으로 시작하는 사람을 모두 조회
- SELECT id,name FROM member WHERE name LIKE '김%'
▶ '진'으로 끝나는 사람을 모두 조회
- SELECT id,name FROM member WHERE name LIKE '%김'
● SELECT [컬럼명] FROM [테이블명] WHERE [컬럼명] LIKE '%특정문자열%'
▶ '프린터'
가 들어가는 제품을 모두 조회
- SELECT id,p_name FROM member WHERE p_name LIKE '%프린터%'
ID | P_NAME |
1 | 삼성프린터F |
2 | 프린터GS |
● SELECT [컬럼명] FROM [테이블명] WHERE [컬럼명] LIKE '특정문자열?'
▶ '김' + 외자인 사람을 모두 조회
- SELECT id,name FROM member WHERE name LIKE '김?'
posted by Gap85