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
반응형