본문 바로가기

[PostgreSQL]

[PostgreSQL] comma separated 된 데이터 혹은 배열을 각 row로 출력하기

반응형
이전 블로그에서 가져온 글입니다. (2020.9.30)

일하면서 종종 데이터들이 콤마(,)로 구분되어 있거나 배열로 저장되어 있을 때 이를 각 row로 뿌려줘야 하는경우가 있었는데

 

구글링해본 결과 regexp_split_to_table()unnest()라는 함수라는 것을 발견함. 구글링 만세

 

이녀석들이 언제 또 쓰일지는 사실 모르지만 그래도 기록해두자.

 

실습

아래와 같은 데이터가 있다고 가정하자

 

1. regexp_split_to_table()

코드

select regexp_split_to_table(data, ',')
  from pgsql_array;

결과

설명

  • 함수앞에 적혀있는 것처럼 요녀석은 정규식을 통해서 row로 구분짓는다.
  • regexp_split_to_table(string, regexp)라고 이해하면 된다.

2. unnest()

코드

select unnest(string_to_array(data, ','))
  from pgsql_array;

결과

설명

  • unnest()의 경우에는 string 데이터를 한번 배열로 만들어줄 필요가 있다.
  • 우선 string_to_array(a,b) 를 간단하게 설명을 하자면 a라는 문자열을 b라는 문자열로 구분지어서 배열로 만들어 주는 PostgreSQL함수다.
  • 위 코드를 보면 string_to_array(data,',') 로 되어있는데 이는 data를 콤마로 구분 지어서 배열을 생성해 준다.
  • 위에서 만들어준 배열을 하나의 row로 쪼개주는 작업을 해주는 것이 unnest()역할
728x90

'[PostgreSQL]' 카테고리의 다른 글

[PostgreSQL] JSON 타입 다루기  (0) 2022.05.08