
fruit table이 아래와 같은 데이터가 있다고 가정하자.
id
|
data
|
과일
|
사과|수박|딸기|오렌지|바나나
|
1. split_part
:: 문자열을 구분자로 나눈 다음 몇 번째에 위치한 데이터를 가져오는 함수
먼저, split_part 를 사용하여 구분자로 구분하고 2번째에 위치한 데이터를 불러보자.
select split_part(data,'|',2) as 두번째_과일 from fruit where id='과일'
* 2를 뺄 경우, 오류가 발생한다.

2. string_to_array
:: 문자열을 구분자로 구분하여 배열로 만드는 함수
문자열을 '|'로 구분하여 배열로 반환하는 쿼리문을 만들어보자.
select string_to_array(data, '|') from fruit where id='과일'

3. unnest
:: 배열로 된 데이터를 row로 만들어주는 함수
문자열을 배열로 만든 후 unnest를 사용하여 row로 반환하자.
select unnest(string_to_array(data, '|')) from fruit where id='과일'

4. 전체 실행 코드
해당 쿼리문을 실행하여 보시고 싶으신 분들은 아래 코드를 참고하시면 됩니다.
with fruit(id, data) as (
values('과일', '사과|수박|딸기|오렌지|바나나')
)
select * from fruit select split_part(data,'|',2) as 두번째_과일 from fruit where id='과일'
select string_to_array(data, '|') from fruit where id='과일'
select unnest(string_to_array(data, '|')) from fruit where id='과일'
5. 자주 활용하는 코드
상황
- frontend에서 문자열로 삭제할 seq를 넘겼을 때
- "1,3,5,7"
- 삭제할 seq : 1,3,5,7
- 구분자 : ,
쿼리문
delete
from sample_table
where seq in (select unnest(string_to_array('1,3,5,7', ','))::numberic;
'DataBase > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] USING (1) | 2022.08.01 |
---|---|
[PostgreSQL] 이전 행 및 다음 행을 비교하는 방법 - Lag와 Lead (2) | 2022.03.11 |
[PostgreSQL] drop, delete, truncate의 차이점 (2) | 2022.02.21 |
[PostgreSQL] 프로시저(Procedure) (0) | 2021.12.27 |
[PostgreSQL] row_to_json VS json_agg 의 차이 (0) | 2021.11.21 |