SPLIT_PART 함수
지정 구분자를 기준으로 문자열을 분할한 후 지정된 위치에 해당하는 부분을 반환합니다.
구문
SPLIT_PART(string, delimiter, position)
인수
- string
-
분할할 문자열 열, 표현식 또는 문자열 리터럴입니다. 문자열은 CHAR 또는 VARCHAR가 될 수 있습니다.
- delimiter
-
입력 문자열의 섹션을 나타내는 구분자 문자열입니다.
delimiter가 리터럴이면 작은따옴표로 묶어야 합니다.
- position
-
반환할 문자열 구간의 위치입니다(1부터 시작). 반드시 0보다 큰 정수이어야 합니다. position이 문자열 구간의 수보다 크면 SPLIT_PART가 빈 문자열을 반환합니다. string에서 delimiter를 찾을 수 없는 경우 반환된 값에는 전체 string 또는 빈 값이 될 수 있는 지정된 부분의 내용이 포함됩니다.
반환 타입
string 파라미터와 동일한 CHAR 또는 VARCHAR 문자열입니다.
예시
다음 예제에서는 $
구분 기호를 사용하여 문자열 리터럴을 여러 부분으로 분할하고 두 번째 부분을 반환합니다.
select split_part('abc$def$ghi','$',2)
split_part ---------- def
다음 예제에서는 $
구분 기호를 사용하여 문자열 리터럴을 여러 부분으로 분할합니다. 4
부분을 찾을 수 없기 때문에 빈 문자열이 반환됩니다.
select split_part('abc$def$ghi','$',4)
split_part ----------
다음 예제에서는 #
구분 기호를 사용하여 문자열 리터럴을 여러 부분으로 분할합니다. 이 구분 기호를 찾을 수 없기 때문에 첫 번째 부분인 전체 문자열이 반환됩니다.
select split_part('abc$def$ghi','#',1)
split_part ------------ abc$def$ghi
다음은 타임스탬프 필드인 LISTTIME을 년, 월, 일 요소로 분할하는 예입니다.
select listtime, split_part(listtime,'-',1) as year, split_part(listtime,'-',2) as month, split_part(split_part(listtime,'-',3),' ',1) as day from listing limit 5;
listtime | year | month | day ---------------------+------+-------+------ 2008-03-05 12:25:29 | 2008 | 03 | 05 2008-09-09 08:03:36 | 2008 | 09 | 09 2008-09-26 05:43:12 | 2008 | 09 | 26 2008-10-04 02:00:30 | 2008 | 10 | 04 2008-01-06 08:33:11 | 2008 | 01 | 06
다음은 LISTTIME 타임스탬프 필드를 선택하고, '-'
문자를 기준으로 필드를 분할하여 월(LISTTIME 문자열의 두 번째 구간)을 가져온 다음 각 월의 항목 수를 계산하는 예입니다.
select split_part(listtime,'-',2) as month, count(*) from listing group by split_part(listtime,'-',2) order by 1, 2;
month | count -------+------- 01 | 18543 02 | 16620 03 | 17594 04 | 16822 05 | 17618 06 | 17158 07 | 17626 08 | 17881 09 | 17378 10 | 17756 11 | 12912 12 | 4589