DB
[DB][Oracle] INSTR
오선지♬
2025. 4. 11. 20:47
728x90
반응형
INSTR는 SQL에서 문자열 내에서 특정 문자열의 위치를 찾는 함수입니다.
📌 기본 문법:
INSTR(string, substring [, start_position [, occurrence]])
📘 파라미터 설명:
- string: 검색 대상 문자열
- substring: 찾고자 하는 부분 문자열
- start_position (선택): 검색을 시작할 위치 (기본값은 1)
- occurrence (선택): 몇 번째로 나타나는 substring을 찾을지 (기본값은 첫 번째)
INSTR(KM.CUST_CD, #{param.sortCustCds}) DESC
은 특정 고객 코드(KM.CUST_CD)가 정렬 우선순위 대상 문자열(#{param.sortCustCds})에
얼마나 앞에 있는지를 기준으로 정렬하는 SQL 구문 일부입니다.
✅ 이 구문이 하는 일
- #{param.sortCustCds}: 예를 들어 'C001,C002,C003' 같은 문자열이 들어올 수 있습니다.
- INSTR(KM.CUST_CD, #{param.sortCustCds}): KM.CUST_CD가 이 문자열에 포함되어 있으면, **해당 위치(인덱스)**를 반환합니다.
- 포함되어 있다면: 정수 > 0
- 포함되어 있지 않다면: 0
그리고 DESC를 붙였으므로,
- 포함되어 있는 고객 코드들이 우선 정렬되고
- 포함 위치가 앞일수록 정렬상 뒤로 (숫자가 작을수록 뒤로 감)
📘 예제
param.sortCustCds = 'C003,C001,C005'
KM.CUST_CD 값들: 'C001', 'C002', 'C003', 'C005', 'C004'
KM.CUST_CD | INSTR 값 (위치) | 정렬 우선순위 (DESC) |
C003 | 1 | 가장 먼저 |
C001 | 6 | 그 다음 |
C005 | 12 | 그 다음 |
C002 | 0 | 맨 뒤 (없음) |
C004 | 0 | 맨 뒤 (없음) |
→ 이 구문을 ORDER BY에 쓰면 지정한 고객 코드 우선 정렬을 할 수 있게 됩니다.
728x90
반응형