Обсуждение: Comparing a varchar of length > 32

Поиск
Список
Период
Сортировка

Comparing a varchar of length > 32

От
"Christian Enklaar"
Дата:
Hello,

we are using a table with a primary key of type varchar[50].
If we try to find entries with select * from <table> where <table.key> =
'<text>';
entries with a key length of more than 32 characters are not found.
Entries with a shorter key are found. Using "Like" instead of "=" works for
varchar keys with length > 32 as well.

Does anybody know about this Problem ?
(We use PostgresQL 7.4.1)

Thanks in advance,
Christian Enklaar.





Re: Comparing a varchar of length > 32

От
Peter Eisentraut
Дата:
Christian Enklaar wrote:
> we are using a table with a primary key of type varchar[50].
> If we try to find entries with select * from <table> where
> <table.key> = '<text>';
> entries with a key length of more than 32 characters are not found.
> Entries with a shorter key are found. Using "Like" instead of "="
> works for varchar keys with length > 32 as well.

Please post the actual table definitions, the actual data, the actual
command you are running, and the actual results you are getting.

--
Peter Eisentraut
http://developer.postgresql.org/~petere/


Re: Comparing a varchar of length > 32

От
Gaetano Mendola
Дата:
Christian Enklaar wrote:
> Hello,
>
> we are using a table with a primary key of type varchar[50].
> If we try to find entries with select * from <table> where <table.key> =
> '<text>';
> entries with a key length of more than 32 characters are not found.
> Entries with a shorter key are found. Using "Like" instead of "=" works for
> varchar keys with length > 32 as well.
>
> Does anybody know about this Problem ?
> (We use PostgresQL 7.4.1)
>

I think you are hiding some informations.

It works here with a 7.4.5 and I'm not aware of any bug like this in previous
versions.

test=# \d test
             Table "public.test"
  Column |         Type          | Modifiers
--------+-----------------------+-----------
  a      | character varying(50) | not null
Indexes:
     "test_pkey" primary key, btree (a)


test=# select a, length(a) from test;
                          a                          | length
----------------------------------------------------+--------
  01234567890123456789012345678901234567890123       |     44
  0123456789012345678901234567890123456789           |     40
  01234567890123456789012345678901234567890123456789 |     50
(3 rows)


test=# select length(a) from test where a = '01234567890123456789012345678901234567890123';
  length
--------
      44
(1 row)


Just an idea, could you reindex your table ?


Regards
Gaetano Mendola


Re: Comparing a varchar of length > 32

От
"Christian Enklaar"
Дата:
Hello,

thanks for your help.

Seems as if the problem was related to our locale settings.

We are running PostgreSQL on QNX and did not set any specific locale when
creating the database.

Now when we explicitely use LOCALE C on database creation everything works
fine.

"Christian Enklaar" <christian.enklaar@mbs-software.de> schrieb im
Newsbeitrag news:civ5i0$12s4$1@news.hub.org...
> Hello,
>
> we are using a table with a primary key of type varchar[50].
> If we try to find entries with select * from <table> where <table.key> =
> '<text>';
> entries with a key length of more than 32 characters are not found.
> Entries with a shorter key are found. Using "Like" instead of "=" works
for
> varchar keys with length > 32 as well.
>
> Does anybody know about this Problem ?
> (We use PostgresQL 7.4.1)
>
> Thanks in advance,
> Christian Enklaar.
>
>
>
>