1

我有一个使用 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中执行相同的查询,我不会遇到这个问题;他们不会剥离任何这些查询中的空间。

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

查看https://www.postgresql.org/docs/9.4/static/functions-aggregate.html,我看到string_agg()它的参数应该是texts 或byteas。好吧,我从来没有遇到过错误,但可以肯定的是,我尝试了string_agg(my_varchar::text, ', '::text). 这并没有什么不同。

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

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

4

0 回答 0