无法找到解决方案来执行以下操作:
SELECT CONCAT_WS(',', (
SELECT * FROM table WHERE id = 1
))
我怎样才能在PostgreSQL中做到这一点?
答案 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行表示法,分隔符恰好只是你要求的逗号,但是如果需要,某些值也会被转义和/或双引号。