📍 비교
| 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 조건으로 포함 여부를 확인 가능
'Database > ORACLE' 카테고리의 다른 글
| [ORACLE] SQL에서 페이징(Pagination) (3) | 2025.08.05 |
|---|---|
| [ORACLE 이론] 중복 제거: UNION, DISTINCT / 중복: UNION ALL (0) | 2025.01.21 |
| [ORACLE 이론] DECODE / CASE (0) | 2025.01.15 |
| [ORACLE 이론] 여러 값을 한 번에 수정: IN (0) | 2025.01.15 |
| [ORACLE 이론] 값이 null일 때 다른 값: NVL (0) | 2024.02.15 |