【问题标题】:ORACLE wm_concat equivalent in PostgreSQLPostgreSQL 中的 ORACLE wm_concat 等效项
【发布时间】:2013-01-28 16:41:36
【问题描述】:

我是 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 中我找不到等效的功能或其他解决方案...

【问题讨论】:

  • 您确定您的代码在 Oracle 中有效吗?

标签: oracle postgresql aggregate-functions postgresql-9.2


【解决方案1】:

PostgreSQL 有一堆可用的aggregation functions

wm_concat 等效项似乎是 string_agg,但您必须指定分隔符。请查看文档以了解详细信息。

【讨论】:

    【解决方案2】:

    这只是简单的连接。您可以使用 CONCAT 函数或仅使用管道编写查询;

    所以第一个解决方案是:

    SELECT CONCAT(p.first_name, ' ', p.last_name) [...]
    

    或:

    SELECT p.first_name || ' ' || p.last_name [...]
    

    如果您想在结果中添加逗号,只需添加逗号而不是间隙,作为列名之间的字符串。即:

    SELECT CONCAT(p.first_name, ', ', p.last_name) [...]

    查询的最后一部分非常神秘。你用这些括号做什么?

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-01
    • 2022-01-17
    • 2012-10-22
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    相关资源
    最近更新 更多