STRING_AGG()使用表达内定界符(结果由一次迭代偏移)

时间:2019-02-02 06:09:39

标签: postgresql

我正在成为一个非常奇怪的行为使用STRING_AGG和使用该分隔符内的表达。结果偏移(即下一次迭代示出了其中定界符会去)。

我有一列包含邻居名称,并且我试图将它们连接成一个字符串以供以后在另一个查询中使用,因为它们很多,因此我需要动态地执行此操作。我已将查询简化为基本要点,但仍得到偏移结果。

示例查询:

 ...
 while(is_opening_hours()){
   const maxstop = await utils.max_entries_reached();
   ...

预期结果:

    select  string_agg(neighborho, concat(' as "', neighborho, '", ')) from neighborhoods;

我得到的结果:

    Cougar  Mountain / Lakemont as "Cougar  Mountain / Lakemont", 
    Northwest Bellevue as "Northwest Bellevue", 
    West Bellevue as "West Bellevue"... so on

我意识到结果查询的意义是零,我排除了其他元素以排除错误。

我很欣赏的投入,谢谢!

1 个答案:

答案 0 :(得分:1)

尝试一次致电STRING_AGG来呼叫CONCAT

SELECT
    STRING_AGG(CONCAT(neighborho, ' as "', neighborho, '", '), ',')
FROM neighborhood;

在Postgres documentation中,STRING_AGG使用两个参数,第二个是定界符。您实际上正在传递as "...作为分隔符,而实际上您似乎只是想用逗号。