본문 바로가기
데이터베이스

PostgreSQL 배열 함수 array_agg, array_to_string, unnest, array_append

by so5663 2022. 11. 4.

 

먼저 가상 테이블을 생성하겠습니다.

with make_array as (
	select unnest(array['고기', '고기', '고기', '채소', '채소']) as col1
	     , unnest(array['삼겹살', '항정살', '가브리살', '상추', '명이나물']) as col2
	)
select 
	col1
	,col2
from make_array;

unnest -> 인수로 입력받은 array를 행집합으로 반환

이런 결과가 나온다.

col1 col2
고기 삼겹살
고기 항정살
고기 가브리살
채소 상추
채소 명이나물

 

 

with make_array as (
	select unnest(array['고기', '고기', '고기', '채소', '채소']) as col1
	     , unnest(array['삼겹살', '항정살', '가브리살', '상추', '명이나물']) as col2
	)
select
    x.col1
    , array_agg(distinct x.col2 order by x.col2) as array_agg
    , array_to_string(array_agg(distinct x.col2 order by x.col2),',') as array_to_string
from make_array x
group by x.col1;

 

위의 쿼리를 실행하면 이런 결과가 나온다.

col1 array_agg array_to_string
고기 {가브리살,삼겹살,항정살} 가브리살,삼겹살,항정살
채소 {명이나물,상추} 명이나물,상추

array_agg 함수를 쓰게되면 위 결과처럼 중괄호로 감싸진 배열형식으로 출력된다.

 

array_to_string 은 함수 이름 그대로 배열을 문자열로 변경시켜주는 함수이다

특히 array_to_string 은 서버에서 사용하기 편하게 가져올때 많이 사용한다.

db에서 값을 가져온 후에 자바에서 split를 자르거나 자바스크립트에서도 편하게 할수 있기 때문에