在Postgres中将列拆分为多行

mgoldwasser:

假设我有一个这样的表:

    subject     | flag
----------------+------
 this is a test |    2

subject是类型的text,并且flag是类型的int我想将此表转换为Postgres中的类似内容:

    token       | flag
----------------+------
 this           |    2
 is             |    2
 a              |    2
 test           |    2

是否有捷径可寻?

欧文·布兰德斯特(Erwin Brandstetter):

在Postgres 9.3+中,使用联接LATERAL

SELECT s.token, flag
FROM   tbl t, unnest(string_to_array(t.subject, ' ')) s(token)
WHERE  flag = 2;

请注意LATERAL,如果unnest()实际返回行,则联接的简写形式仅返回行

您也可以使用regexp_split_to_table(),但这通常比较慢,因为正则表达式匹配要花费更多。
有关:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章