Database/ORACLE

[ORACLE] 문자열 찾기: LIKE / INSTR

오류나면꽥꽥 2025. 8. 5. 13:42

📍 비교

  INSTR LIKE
용도 문자열 위치 찾기 패턴 매칭
반환값 정수 (1부터 시작, 없으면 0) TRUE / FALSE (조건식에서 사용)
속도 대체로 빠름
(단, 인덱스 미사용 시 LIKE와 비슷)
패턴 복잡도에 따라 느릴 수 있음
활용 포함 여부만 체크
위치값 필요
포함 여부만 체크
복잡한 패턴 (와일드카드, 자리수)
와일드카드 없음 %, _ 지원

 

 

 

 

 

✅ LIKE

기본 문법)

SELECT * FROM 테이블명
WHERE 컬럼명 LIKE '패턴';

 

 

와일드카드

% _
0개 이상의 문자를 의미 정확히 1개의 문자를 의미

 

 

ex) %

SELECT * FROM users
WHERE name LIKE 'kim%';
  • kim으로 시작하는 값
    kim123, kimmy, ...

 

SELECT * FROM users
WHERE name LIKE '%park';
  • park으로 끝나는 값
    heypark, 123park, ...

 

SELECT * FROM users
WHERE name LIKE '%lee%';
  • lee가 포함된 값 (위치 상관없이)
    hilee, lee123, ...

 

 

ex) 특정위치 문자 찾을때: _

SELECT * FROM users
WHERE name LIKE '_im'; -- 한 글자 + im
  • 3글자이며 앞글자 아무거나 + im인 값
    him, jim, ...

 

 

 

 

 

 

✅ INSTR

기본 문법)

INSTR(문자열, 찾을_문자[, 시작위치[, 몇번째]])

 

 

 

ex)

SELECT INSTR('Hello World', 'o') FROM dual; 
-- 결과: 5  (첫 번째 'o' 위치)

SELECT INSTR('Hello World', 'o', 1, 2) FROM dual;
-- 결과: 8  (두 번째 'o' 위치)

 

 

SELECT * 
FROM table_name
WHERE INSTR(col, 'ABC') > 0;
  • 위치값을 이용해 > 0 조건으로 포함 여부를 확인 가능