postgreSQL一行与多行(20.6.1)
2020-06-23 本文已影响0人
剑道_7ffc
多行变一行
准备
表结构
CREATE TABLE tmp_book(
book_id int8 NOT NULL,
book_name varchar(48) NOT NULL
);
数据
SELECT * FROM tmp_book;
![](https://img.haomeiwen.com/i5359801/8bac74178b8d7bf5.png)
函数
string_agg(字段名,分隔符)
SELECT book_id,string_agg(book_name,',') FROM tmp_book GROUP BY book_id;
![](https://img.haomeiwen.com/i5359801/14956e214d8534d7.png)
array_agg(字段名)
select book_id,array_agg(book_name) from tmp_book group by book_id;
![](https://img.haomeiwen.com/i5359801/3dedac1356cf362e.png)
一行变多行
准备
表结构
CREATE TABLE tmp_book(
book_id int8 NOT NULL,
book_name varchar(48) NOT NULL
);
数据
SELECT * FROM tmp_book;
![](https://img.haomeiwen.com/i5359801/318aebf69e467d39.png)
函数
unnest(数组)
SELECT book_id,string_to_array(book_name,','),unnest(string_to_array(book_name,',')) FROM tmp_book;
![](https://img.haomeiwen.com/i5359801/8611b2e5d0405c27.png)
regexp_split_to_table(字符串,分隔符)
select book_id,regexp_split_to_table(book_name,',') from tmp_book;
![](https://img.haomeiwen.com/i5359801/9c91b8c5e5085e35.png)
字符串变数组
string_to_array
SELECT book_id,book_name,string_to_array(book_name,',') FROM tmp_book;
![](https://img.haomeiwen.com/i5359801/22e6d2dc3ee50ada.png)
regexp_split_to_array
select book_id,book_name,regexp_split_to_array(book_name,',') from tmp_book;
![](https://img.haomeiwen.com/i5359801/efd371ed3cc2fa11.png)