我有一个包含逗号分隔字符串字段的表:

ID | fruits
-----------
1  | cherry,apple,grape 
2  | apple,orange,peach 

我想创建一个表的规范化版本,如下所示:

ID | fruits
-----------
1  | cherry 
1  | apple 
1  | grape
2  | apple 
2  | orange 
2  | peach 

postgresql 8.4文档描述了一个regexp_split_to_table函数,该函数可以转换单个表:

SELECT foo 
FROM regexp_split_to_table('the quick brown fox jumped over the lazy dog',E'\\s+') AS
foo;

这就给了你:

  foo   
--------
  the    
  quick  
  brown  
  fox    
  jumped 
  over   
  the    
  lazy   
  dog    
 (9 rows)

但这只是一个领域.我想做的是对通过拆分每个字段生成的所有表应用某种联合.非常感谢.

推荐答案

这将为您提供所需的输出:

SELECT 
    yourTable.ID, 
    regexp_split_to_table(yourTable.fruits, E',') AS split_fruits
FROM yourTable

编辑:修复了正则表达式.

Postgresql相关问答推荐

在Docker Compose中获取CSV文件数据?

我可以将jsonb_set与来自SELECT语句的新值(第三个参数)一起使用吗?

Rust中使用sqlx的多线程postgres操作的惯用方法是什么?

如何获得一起满足数量要求的物品? (WHILE 循环还是 CTE?)postgresql

为什么不能超过 10 个并发连接到 Postgres RDS 数据库

PostgreSql maintenance_work_mem 在索引创建期间增加

在 PostgreSQL 中 Select 数字命名列会返回 ?column?

如何包装 record_out() 函数?

如何将 NULL 值插入 UUID 而不是零

如何展平也在关系中使用的区分大小写的列

如何获得区间的绝对值

postgres 的密码

如果 PostgreSQL 数据库中存在,则删除表

查询仅属于特定部门的用户

从time without time zone和时区名称中获取time with time zone

如何使用 node-postgres 将多行正确插入 PG?

如何在 postgres 模式中列出关系

在 MAC OS X 10.6 for PostgreSQL 上设置 SHMMAX 等值

Django 中的唯一模型字段和区分大小写(postgres)

Rails ActiveRecord:PG::Error:错误:column reference "created_at" is ambiguous