SQL/Redshift

Redshift : split_part (특정 구분자를 기준으로 텍스트 나누기)

CosmosProject 2021. 9. 30. 21:05
728x90
반응형

 

 

 

 

Redshift의 split_part 함수를 사용하면 특정 구분자를 기준으로 텍스트를 나눌 수 있습니다.

 

Syntax

split_part(text, delimiter, part)

text = split_part를 적용할 original text입니다.

delimiter = text를 어떤 것을 기준으로 나눌지에 대한 구분자입니다.

part = delimiter를 기준으로 나뉜 text 중 몇 번째 text를 return할지에 대한 숫자를 적습니다. 반드시 0 이상이어야 하며 part의 숫자가 나뉜 text 개수보다 더 많다면 공백을 return합니다.

 

 

 

 

 

 

select  split_part('10, cc, 3, bb, 5, aa', ', ', 1),  --> 10
        split_part('10, cc, 3, bb, 5, aa', ', ', 2),  --> cc
        split_part('10, cc, 3, bb, 5, aa', ', ', 3),  --> 3
        split_part('10, cc, 3, bb, 5, aa', ', ', 4),  --> bb
        split_part('10, cc, 3, bb, 5, aa', ', ', 5),  --> 5
        split_part('10, cc, 3, bb, 5, aa', ', ', 6)   --> aa
        split_part('10, cc, 3, bb, 5, aa', ', ', 7),  --> 
        split_part('10, cc, 3, bb, 5, aa', ', ', 8)   --> 
;

위 예시를 봐봅시다.

 

일단 split_part를 적용할 텍스트는 10, cc, 3, bb, 5, aa 입니다.

 

이것을 ', '로 나누면 다음과 같이 총 6개의 부분으로 나눠지게 되겠죠.

10

cc

3

bb

5

aa

 

part가 1인 경우 10이 return됩니다.

part가 2인 경우 cc가 return됩니다.

part가 3인 경우 3이 return됩니다.

part가 4인 경우 bb가 return됩니다.

part가 5인 경우 5가 return됩니다.

part가 6인 경우 aa가 return됩니다.

part가 7인 경우 나뉜 텍스트 중 7번째 텍스트가 없으므로 공백이 return됩니다.

part가 8인 경우 나뉜 텍스트 중 7번째 텍스트가 없으므로 공백이 return됩니다.

 

 

 

 

 

 

728x90
반응형