PQgetvalue реальный размер поля - PullRequest
0 голосов
/ 26 июля 2011

Я читаю информацию из базы данных pqsql (и изменил мой движок с mysql), что-то странное в возвращаемых строковых данных,

, если длина поля в БД составляет 50 символов, возвращаемое значение имеетДлина 50 символов, поэтому даже если значение в БД вставлено с меньшим количеством элементов, размер возвращаемого значения равен 50.

в mysql размер возвращаемого значения был таким же, как он был вставлен в БД.

пример

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

я как-то удивился этому, потому что теперь янужно сохранить или рассчитать каким-то образом реальный размер поля, а не максимальный размер поля

Я что-то не так делаю?

(извините за опечатки)

1 Ответ

1 голос
/ 26 июля 2011

Поле объявлено как char, а не varchar. Значение поля char всегда будет иметь объявленную длину, вероятно, после заполнения значения справа пробелами. Из твоего описания я бы подумал поменять его на varchar.

См. http://www.postgresql.org/docs/8.2/static/datatype-character.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...