我是PostgreSQL的新手,我在将数据库从Oracle迁移到PostgreSQL 9.2时遇到了问题。我必须在我的代码中更改一些本机查询。我有一个子查询,如:
SELECT wm_concat(p.first_name || ' ' || p.last_name)
FROM TODO_PERSON PR
JOIN PERSON P ON (p.id == pr.person_id)
WHERE todo_id = internal_table.id
在PostgreSQL中我找不到等效函数或其他解决方案......
答案 0 :(得分:6)
PostgreSQL有一堆可用的aggregation functions。
wm_concat
等效似乎是string_agg
,除非您必须指定分隔符。请查看文档以获取详细信息。
答案 1 :(得分:0)
这只是简单的连接。您可以使用CONCAT函数或仅使用管道写入查询;
所以第一个解决方案是:
SELECT CONCAT(p.first_name, ' ', p.last_name) [...]
或:
SELECT p.first_name || ' ' || p.last_name [...]
如果要在结果中添加逗号,只需添加逗号而不是空格,作为列名之间的字符串。即:
SELECT CONCAT(p.first_name,',',p.last_name)[...]
你查询的最后一部分非常神秘。你用这些括号做什么?