본문 바로가기
Database/Oracle

[ORACLE] INSTR() 함수로 문자열 위치 찾기의 모든 것

by Papa Martino V 2025. 6. 3.
728x90

오라클 INSTR() 함수로 문자열 위치 찾기의 모든 것
[Oracle] INSTR

 

Oracle SQL에서 문자열 내 특정 문자의 위치를 찾는 데 유용한 INSTR 함수에 대해 자세히 알아봅니다. 본 글은 실전 예제를 중심으로 구성하여 초보자와 실무 개발자가 쉽게 이해할 수 있도록 하였습니다.

1. INSTR 함수란?

INSTR 함수는 문자열에서 특정 문자나 문자열이 처음 또는 특정 번째로 나타나는 위치를 반환하는 함수입니다.

INSTR(string, substring [, start_position [, occurrence]])
  • string: 검색 대상 문자열
  • substring: 검색할 문자 또는 문자열
  • start_position (선택): 검색 시작 위치 (기본값 1)
  • occurrence (선택): 찾고자 하는 substring의 등장 순서

2. 기본 사용 예제

SELECT INSTR('Oracle Database', 'a') AS result FROM dual;
-- 결과: 3
SELECT INSTR('Oracle Database', 'a', 1, 2) AS result FROM dual;
-- 결과: 9

3. 다양한 파라미터 조합 예제

SELECT INSTR('Oracle SQL Oracle', 'Oracle') AS result FROM dual;
-- 결과: 1 (첫 번째 Oracle의 시작 위치)
SELECT INSTR('Oracle SQL Oracle', 'Oracle', 1, 2) AS result FROM dual;
-- 결과: 13 (두 번째 Oracle의 시작 위치)
SELECT INSTR('Oracle SQL Oracle', 'oracle') AS result FROM dual;
-- 결과: 0 (대소문자 구분)

4. 실제 테이블에서의 활용 예제

예제 테이블: users

CREATE TABLE users (
  id NUMBER,
  full_name VARCHAR2(100),
  email VARCHAR2(100)
);

INSERT INTO users VALUES (1, 'Kim Jisoo', 'jisoo.kim@domain.com');
INSERT INTO users VALUES (2, 'Lee Minho', 'lee.minho@domain.com');

@ 위치 찾기

SELECT 
  email,
  INSTR(email, '@') AS at_position
FROM users;

도메인만 추출하기 (SUBSTR + INSTR)

SELECT 
  email,
  SUBSTR(email, INSTR(email, '@') + 1) AS domain
FROM users;

5. INSTR vs REGEXP_INSTR 비교

항목 INSTR REGEXP_INSTR
기능 단순 문자열 위치 정규표현식 기반 위치
정밀도 낮음 높음
복잡도 낮음 높음
성능 빠름 느림 (패턴 분석)

6. 활용 팁 및 유의사항

  • INSTR은 대소문자를 구분합니다. 필요 시 UPPER, LOWER 함수를 함께 사용하세요.
  • start_position이 음수면 문자열 끝에서부터 계산합니다.
  • 찾는 문자열이 없을 경우 결과는 0입니다.

7. 결론

INSTR 함수는 Oracle SQL에서 문자열 내 위치 검색 시 필수적으로 사용되는 함수입니다. 다양한 조건과 조합으로 활용이 가능하며, SUBSTR이나 LENGTH 함수와 함께 사용하면 더욱 강력한 문자열 처리 도구가 됩니다.

📚 참고 자료

  • Oracle 공식 문서: docs.oracle.com
  • SQL Fundamentals by John J. Patrick (Oracle Press)
  • SQL Cookbook (O'Reilly)
728x90