我有一个使用 PostgreSQL API 的 GNU C++ 项目,出于某种原因,它从某个查询的结果中去除了空格。其他环境(psql
和 pgAdmin)没有。查询是:
SELECT string_agg(my_varchar, ', ') FROM my table;
注意分隔符中逗号后面的空格。1046976, 1046977
我没有被 退回,而是PQgetvalue()
得到1046976,1046977
。只是为了好玩,我尝试将分隔符更改为愚蠢的东西,例如string_agg(my_varchar, ',:) '
and string_agg(my_varchar, ', :)'
。如果空格位于分隔符的中间,它不会剥离空格。
psql
同样,如果我在 db 浏览器和 pgAdmin中执行相同的查询,我不会遇到这个问题;他们不会剥离任何这些查询中的空间。
是的,我考虑过这样的可能性,因为它们从中提取的列是varchar
s,但数据是 7 位整数,引擎可能会混淆。我将查询更改为真正的 a varchar
,但空格仍然被剥离。
查看https://www.postgresql.org/docs/9.4/static/functions-aggregate.html,我看到string_agg()
它的参数应该是text
s 或bytea
s。好吧,我从来没有遇到过错误,但可以肯定的是,我尝试了string_agg(my_varchar::text, ', '::text)
. 这并没有什么不同。
我对这个 API 了解不多,但它似乎没有使用任何选项连接到数据库,所以我认为关于配置没有太多可说的。
我在 Debian 8.10 上的 GNU C++ v4.9.2 中运行它。PostgreSQL 引擎和 API 是 9.4。