pgsql 字符串行转列
时间: 2023-07-29 07:11:42 浏览: 305
可以使用 PostgreSQL 中的 `string_to_array()` 和 `unnest()` 函数来实现字符串行转列的操作。
假设有如下字符串:
```
'1,2,3
4,5,6
7,8,9'
```
可以使用以下 SQL 语句将其转换为列:
```
SELECT unnest(string_to_array('1,2,3
4,5,6
7,8,9', E'\n')) AS col1,
unnest(string_to_array('1,2,3
4,5,6
7,8,9', E'\n')) AS col2,
unnest(string_to_array('1,2,3
4,5,6
7,8,9', E'\n')) AS col3;
```
输出结果如下:
```
col1 | col2 | col3
------+------+------
1 | 2 | 3
4 | 5 | 6
7 | 8 | 9
(3 rows)
```
这里使用 `string_to_array()` 函数将字符串按行分割成数组,然后使用 `unnest()` 函数将数组的元素展开成多行,每行对应一个元素。最后,将多个 `unnest()` 函数的结果作为列输出即可。
相关问题
pgsql字符串行转列
在 PostgreSQL 中,你可以使用 `string_agg()` 函数将多行转换为单行,并且可以使用 `GROUP BY` 子句将单行分组为多列。
假设你有一个名为 `your_table` 的表,其中包含 `original_column` 和 `new_column` 两个列,其中 `original_column` 是要保留的原始行信息,`new_column` 是要转换的列。你可以使用以下查询将其转换为多列:
```
SELECT original_column, string_agg(new_column, ',') AS new_columns
FROM your_table
GROUP BY original_column;
```
这将在 `new_columns` 列中聚合每个 `original_column` 值对应的多个 `new_column` 值,并使用逗号分隔它们。这将为每个唯一的 `original_column` 值生成一行。
如果你希望使用不同的分隔符,可以将其作为第二个参数传递给 `string_agg()` 函数。例如,以下查询将使用空格作为分隔符:
```
SELECT original_column, string_agg(new_column, ' ') AS new_columns
FROM your_table
GROUP BY original_column;
```
阅读全文
相关推荐
