문자열 함수입문

SUBSTR

문자열에서 일부분을 잘라내는 함수

정의

SUBSTR(문자열, 시작위치, 길이) 형식. 예: SUBSTR('010-1234-5678', 1, 3) → '010'. 시작위치는 1부터. 길이를 생략하면 끝까지 잘라낸다. 같은 기능의 함수가 DB마다 이름이 다른데(오라클·MySQL은 SUBSTR, 표준은 SUBSTRING), 오라클에서는 SUBSTR이 표준이다.

왜 중요한가?

전화번호 앞 3자리, 우편번호 앞 자리, 카드번호 마스킹 같은 작업에 자주 쓴다. 단, WHERE 조건에 SUBSTR을 씌우면 데이터베이스가 빨리 찾는 기능(인덱스)을 못 쓴다. WHERE col LIKE '010%' 같은 형태로 바꾸면 더 빠르다.

틀리기 쉬운 포인트

  • !WHERE SUBSTR(col, 1, 3) = '010' 보다 WHERE col LIKE '010%'가 인덱스를 탑니다.
  • !시작위치는 1부터(0이나 음수는 허용되지만 의미가 다름).
  • !ANSI는 SUBSTRING, 오라클은 SUBSTR. 함수명 자체가 DB마다 다릅니다.

예시

SELECT phone, SUBSTR(phone, 1, 3) AS area_code
FROM customers;

성능 포인트

!WHERE에 SUBSTR 적용은 인덱스 무력화. LIKE 'prefix%' 변환을 검토하라.

관련 개념

관련 카테고리