我有一个使用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()
期望其参数为text
或bytea
。好吧,我从来没有犯过错误,但可以肯定的是,我试过了string_agg(my_varchar::text, ', '::text)
。它没有什么区别。
我不太了解这个API,但它似乎没有任何选项连接到数据库,所以我认为没有太多关于配置的说法。
我在Debian 8.10上的GNU C ++ v4.9.2中运行它。 PostgreSQL引擎和API是9.4。