如何连接表行的所有结果?

时间:2014-05-28 17:34:44

标签: sql postgresql casting row string-concatenation

无法找到解决方案来执行以下操作:

SELECT CONCAT_WS(',', (
    SELECT * FROM table WHERE id = 1
))

我怎样才能在PostgreSQL中做到这一点?

1 个答案:

答案 0 :(得分:2)

又快又脏:

SELECT t::text FROM tbl t WHERE id = 1;
  • t是表的别名,并非严格需要。您也可以使用原始表名。但是如果你有一个同名的列,那就优先了。

  • 因此t表示表的行类型,它会自动强制转换为输出上的文本表示。
    我在内部向 make text添加了一个明确的演员表 - 如果你想对它做任何事情......
    t::text是SQL标准cast (t AS text)的Postgres简短表示法,您也可以使用它。 Details in the manual.

  • 您可能希望修剪表示行类型的(单个!)前导和尾随括号:

    SELECT right(left(t::text, -1), -1))
    FROM   tbl AS t
    WHERE  id = 1;
    
  • "脏",因为你得到Postgres行表示法,分隔符恰好只是你要求的逗号,但是如果需要,某些值也会被转义和/或双引号。