PQgetvalue实际字段大小

时间:2011-07-26 06:41:23

标签: c postgresql

我正在从pqsql数据库中读取信息(并从mysql中更改了我的引擎) 返回的字符串数据中有一些奇怪的东西,

如果db中的字段长度为50个字符,则返回的值具有50个字符长度,因此 即使使用较少的元素插入db中的值,返回的值大小也是50。

在mysql中,

返回的值大小与在db中插入的大小相同。

例如

create table values(data char(50))
insert into table values('info');

当我使用PQgetvalue

获取此数据时
res=PQexec(conn,"select * from values");
printf(" the value has the lenght of %d chars",strlen(PQgetvalue(res,0,0)));

它会显示

the value has the lenght of 50

我有点意外,因为现在我需要存储o以某种方式计算字段的实际大小,没有最大字段大小

我做错了什么?

(对不起错别字)

1 个答案:

答案 0 :(得分:1)

该字段声明为char,而不是varchar。 char字段的值将始终具有声明的长度,可能在使用空格填充右边的值之后。根据您的描述,我会考虑将其更改为varchar。

请参阅http://www.postgresql.org/docs/8.2/static/datatype-character.html