需要有关postgresql查询中拆分行的帮助吗
我有一个下表,需要按角色\集合值拆分行:需要有关postgresql查询中拆分行的帮助吗,sql,postgresql,split,unnest,Sql,Postgresql,Split,Unnest,我有一个下表,需要按角色\集合值拆分行: name role_collection date ------------------------------------ raj 3,5 2018 6 12 gopi 2,3,6 2018 6 12 mani 3,4,5,7 2018 6 12 现在我需要这样的输出: name role date -----------------
name role_collection date
------------------------------------
raj 3,5 2018 6 12
gopi 2,3,6 2018 6 12
mani 3,4,5,7 2018 6 12
现在我需要这样的输出:
name role date
------------------------
raj 3 2018 6 12
raj 5 2018 6 12
gopi 2 2018 6 12
gopi 3 2018 6 12
gopi 6 2018 6 12
mani 3 2018 6 12
mani 4 2018 6 12
mani 5 2018 6 12
mani 7 2018 6 12
欢迎来到Stackoverflow 假设您具有以下表格结构:
CREATE TABLE t (name TEXT, role_collection TEXT, d DATE);
以及您的示例数据:
INSERT INTO t VALUES ('raj','3,5','2018-6-12'),
('gopi','2,3,6','2018-6-12'),
('raj','3,4,5,7','2018-6-12');
如果列role\u collection
ins的类型不是TEXT[]
或VARCHAR[]
,则使用逗号分隔的role\u collection值创建一个数组。然后使用可以提取此数组的所有元素,如下所示:
SELECT name, UNNEST(STRING_TO_ARRAY(role_collection,',')),d
FROM t;
name | unnest | d
------+--------+------------
raj | 3 | 2018-06-12
raj | 5 | 2018-06-12
gopi | 2 | 2018-06-12
gopi | 3 | 2018-06-12
gopi | 6 | 2018-06-12
raj | 3 | 2018-06-12
raj | 4 | 2018-06-12
raj | 5 | 2018-06-12
raj | 7 | 2018-06-12
(9 Zeilen)
是否可以添加查询以重新创建表。请修改格式。因此,我们可以很容易地复制尚未显示表定义的数据,如果没有这些数据,很难给出好的答案。请看,您不应该首先在一列中存储逗号分隔的值。如果已经正确地规范化了数据模型,现在就不需要“拆分”这些值