Comparing a varchar of length > 32

Started by Christian Enklaarover 21 years ago4 messagesgeneral
Jump to latest
#1Christian Enklaar
christian.enklaar@mbs-software.de

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.

#2Gaetano Mendola
mendola@bigfoot.com
In reply to: Christian Enklaar (#1)
Re: Comparing a varchar of length > 32

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

#3Peter Eisentraut
peter_e@gmx.net
In reply to: Christian Enklaar (#1)
Re: Comparing a varchar of length > 32

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/

#4Christian Enklaar
christian.enklaar@mbs-software.de
In reply to: Christian Enklaar (#1)
Re: Comparing a varchar of length > 32

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

Show quoted text

varchar keys with length > 32 as well.

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

Thanks in advance,
Christian Enklaar.