找不到解决方案来执行以下操作:
SELECT CONCAT_WS(',', ( SELECT * FROM table WHERE id = 1 ))
如何在PostgreSQL中做到这一点?
快速而肮脏:
SELECT t::text FROM tbl t WHERE id = 1;
t是表的别名,并非严格需要。您也可以使用原始表名。但是,如果您具有相同名称的列,则该列具有优先权。
t
因此,t代表表的行类型,该行类型将自动强制为输出的文本表示形式。 我还添加了一个显式的强制转换, 使其 在text内部也可以使用-如果您想对其进行任何处理,… t::text是SQL标准的Postgres缩写cast (t AS text),您也可以使用它。手册中的详细信息。
text
t::text
cast (t AS text)
您可能需要修剪表示行类型的(单个!)前导和尾括号:
SELECT right(left(t::text, -1), -1))
FROM tbl AS t WHERE id = 1;
“脏”,因为您得到Postgres行表示法,所以分隔符恰好是您要求的逗号,但是某些值也被转义和/或在需要时用双引号引起来。