Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL/libpq中的字符串格式设置_Postgresql_Libpq - Fatal编程技术网

PostgreSQL/libpq中的字符串格式设置

PostgreSQL/libpq中的字符串格式设置,postgresql,libpq,Postgresql,Libpq,我正在为我的C/C++应用程序使用libpq与PostgreSQL接口 我的查询是参数化的,是文本(而不是二进制)格式(使用PQexecParams),它们返回的数据可能是text、text[]、int4range或其他复杂类型。然而,libpq似乎是根据似乎没有很好的文档记录的规则来格式化字符串的 例如,对于字符串数组,libpq返回如下内容: {abc,def,"h,h","h\"h",h'h,"h h"} 当C样式的数组如下所示: {"abc","def","h,h","h\"h","h

我正在为我的C/C++应用程序使用libpq与PostgreSQL接口

我的查询是参数化的,是文本(而不是二进制)格式(使用
PQexecParams
),它们返回的数据可能是
text
text[]
int4range
或其他复杂类型。然而,libpq似乎是根据似乎没有很好的文档记录的规则来格式化字符串的

例如,对于字符串数组,libpq返回如下内容:

{abc,def,"h,h","h\"h",h'h,"h h"}
当C样式的数组如下所示:

{"abc","def","h,h","h\"h","h'h","h h"}
libpq似乎将双引号和转义字符(
\
)放在它认为合适的地方

对于字符串(不是字符串数组),libpq将根本不放置双引号


由于任何可打印字符都可能存储在我的字符串中,有没有办法强制libpq或PostgreSQL以一致的格式返回字符串和字符串数组,以便于我的C/C++应用程序使用?

这与libpq无关,这是PostgreSQL数组的标准(事实上,如果您还想支持任意索引数组,则要比这复杂得多).
libpqtypes
可能会满足您的需要:请看。@pozs这很有意义,谢谢!最终我使用
array\u to\u string
让PostgreSQL将数据作为普通字符串发送。对于整数和时间戳类型,我已经编写了一个如下所示的接口:
pqclient.query(“从my_表中选择my_id,my_text,其中data=$1;”,make_tuple(12345),tuple(),[](可选和错误,向量和结果){…})
,这将暂时解决简单类型的问题。