substr()
substr() 함수는 문자열에서 지정한 인덱스 범위에 해당하는 부분 문자열을 반환합니다.
문법
substr(STR, BEGIN[, END])
매개변수
STR- 원본 문자열 필드 또는 값입니다. 문자열이 아닌 값은 문자열로 변환하여 처리합니다.
BEGIN- 추출을 시작할 문자 인덱스입니다. 인덱스는 0부터 시작합니다. 음수이면 문자열 끝에서부터 역방향으로 계산합니다.
null이거나 숫자로 해석할 수 없는 값, 또는 값이int범위를 벗어나면null을 반환합니다. 변환된 시작 인덱스가 문자열 길이 이상이거나 0 미만이면null을 반환합니다. END- (선택) 추출을 끝낼 문자 인덱스(미포함)입니다. 인덱스는 0부터 시작합니다. 생략하면 문자열 끝까지 추출합니다. 음수이면 문자열 끝에서부터 역방향으로 계산합니다.
END가 문자열 길이보다 크면 문자열 끝까지 추출합니다.null이거나 숫자로 해석할 수 없는 값, 또는 값이int범위를 벗어나면null을 반환합니다.BEGIN이END보다 크거나 변환 후 0 미만이면null을 반환합니다.
설명
substr() 함수는 STR 문자열의 BEGIN 인덱스(포함)부터 END 인덱스(미포함)까지의 부분 문자열을 반환합니다.
STR이null이면null을 반환합니다.BEGIN이나END가null이거나 숫자로 해석할 수 없는 값, 또는int범위를 벗어난 값이면 해당 행에 대해null을 반환합니다. 문자열 형태의 숫자(예:"42")는 정상적인 인덱스로 처리됩니다.END와BEGIN이 같으면 빈 문자열("")을 반환합니다.BEGIN이나END가 잘못된 값이어도 해당 행만null이 되며, 쿼리는 중단되지 않고 나머지 행을 계속 처리합니다.
오류 코드
해당 사항 없음
사용 예
이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.
-
URI의 앞부분 10자 추출
table limit=5 WEB_APACHE_SAMPLE | eval result = substr(uri, 0, 10) | fields uri, result -
시작 인덱스만 지정하여 URI의 첫 번째
/이후 부분 추출table limit=5 WEB_APACHE_SAMPLE | eval result = substr(uri, 1) | fields uri, result | # result: "feed", "archives/2370" 등 -
음수 인덱스로 URI 끝부분 추출
table limit=5 WEB_APACHE_SAMPLE | eval result = substr(uri, -5) | fields uri, result -
NULL 입력
json "{'val': null}" | eval result = substr(val, 0, 3) | # result: null -
시작 위치가 NULL인 경우 — null 반환(4.0.2609.0부터 적용된 동작)
json "{'val': 'hello'}" | eval result = substr(val, null) | # result: null4.0.2609.0 이전에는
BEGIN이null이면 원본 문자열(val) 전체를 그대로 반환했습니다. 이제는 이 경우null을 반환합니다. -
시작 위치가 숫자로 해석되지 않는 경우 — 해당 행만 null 반환
json "{'val': 'hello'}" | eval result = substr(val, "abc") | # result: null4.0.2609.0 이전에는 이런 입력이 오류를 일으켜 쿼리 전체가 중단되었습니다. 이제는 해당 행만
null을 반환하고 나머지 행은 정상적으로 처리됩니다.
변경 이력
| 대상 | 도입 릴리스 |
|---|---|
substr() 함수 | 소나 4.0 이전 버전 |
잘못된 위치 인자를 쿼리 중단 없이 해당 행만 null로 반환 | 4.0.2609.0 |