Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要有关postgresql查询中拆分行的帮助吗_Sql_Postgresql_Split_Unnest - Fatal编程技术网

需要有关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)

是否可以添加查询以重新创建表。请修改格式。因此,我们可以很容易地复制尚未显示表定义的数据,如果没有这些数据,很难给出好的答案。请看,您不应该首先在一列中存储逗号分隔的值。如果已经正确地规范化了数据模型,现在就不需要“拆分”这些值