PQgetvalue()从string_agg()

时间:2018-03-26 14:19:55

标签: postgresql c-api

我有一个使用PostgreSQL API的GNU C ++项目,出于某种原因,它会从某个查询的结果中删除空格。其他环境(psql和pgAdmin)则没有。查询是:

SELECT string_agg(my_varchar, ', ') FROM my table;

注意分隔符中逗号后面的空格。我没有1046976, 1046977返回PQgetvalue(),而是1046976,1046977。只是为了踢,我尝试将分隔符更改为string_agg(my_varchar, ',:) 'string_agg(my_varchar, ', :)'之类的愚蠢内容。如果空格位于分隔符的 middle 中,则剥离空格。

同样,如果我在psql和pgAdmin等数据库浏览器中执行相同的查询,我就没有这个问题。他们不会在任何查询中删除空格。

是的,我考虑过可能因为它们提取的列是varchar,但数据是7位整数,引擎可能会混淆。我将查询更改为真正的varchar,但空格仍然被剥离。

查看https://www.postgresql.org/docs/9.4/static/functions-aggregate.html,我发现string_agg()期望其参数为textbytea。好吧,我从来没有犯过错误,但可以肯定的是,我试过了string_agg(my_varchar::text, ', '::text)。它没有什么区别。

我不太了解这个API,但它似乎没有任何选项连接到数据库,所以我认为没有太多关于配置的说法。

我在Debian 8.10上的GNU C ++ v4.9.2中运行它。 PostgreSQL引擎和API是9.4。

0 个答案:

没有答案