pgsql 字符串行转列
时间: 2023-07-29 15:11:42 浏览: 253
可以使用 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;
```
pgsql字符串列转行
你可以使用 PostgreSQL 内置的 `unnest()` 函数和数组操作符 `||` 将字符串列转换为多行。
假设你有一个名为 `string_column` 的字符串列,每个单元格中包含以逗号分隔的值。你可以使用以下查询将其转换为多行:
```
SELECT unnest(string_to_array(string_column, ',')) AS new_column
FROM your_table;
```
这将把 `string_column` 的每个单元格拆分成一个数组,然后使用 `unnest()` 函数将数组展开为多行。`new_column` 列将包含原始字符串列中的每个单独的值,每个值将在单独的行中出现。
如果你想保留原始行的信息,你可以使用以下查询:
```
SELECT original_column, unnest(string_to_array(string_column, ',')) AS new_column
FROM your_table;
```
这将在每个新行中包含原始行的信息,以及该行中的单个值。
阅读全文