sql - 如何使用单个查询将一行拆分为多行?

标签 sql postgresql

这个:

column_A|column_B|column_C
a|a,b,c|b
b|a|b
c|a|c

应该这样结束:

column_A|column_B|column_C
a|a|b
a|b|b
a|c|b
b|a|b
c|a|c

column_B 有类似 CSV 的数据。列由任意字符分隔,在本例中为逗号。

最佳答案

您应该能够通过 string_to_arrayunnest 的组合来完成此操作:

SELECT column_a, unnest(string_to_array(column_b,',')), column_c 
FROM   tablename;

SQLFiddle

也就是说,您没有提供有关数据类型的足够信息,并且任意字符如果用作分隔符,则永远不会是任意的。

关于sql - 如何使用单个查询将一行拆分为多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33919329/

相关文章:

php - 在查询中使用 "WHERE"时 PDO 失败

sql - 解释 SQL 中的编码字段

Mysql按一个字段分组,按另一个字段排序

sql - 如何从 PostgreSQL 选择查询中的时间戳获取日期和时间?

postgresql - 具有数据库中多个表的 Tableau Extract API

php - 两个数据库上的两个事务

sql - 选择数字组合与整数 SQL 的一部分匹配的位置

mysql - 是否可以在列大小不匹配的情况下创建外键

mysql - 基于内部查询返回计数的 UNION 有效方法?

ruby-on-rails - Rails 控制台无法在 Digital Ocean 上与 Dokku 一起使用