BUG #2309: Wrong string comparison

Started by Yury Donabout 20 years ago4 messagesbugs
Jump to latest
#1Yury Don
yura@vpcit.ru

The following bug has been logged online:

Bug reference: 2309
Logged by: Yury Don
Email address: yura@vpcit.ru
PostgreSQL version: 8.1.3
Operating system: Linux (Debian)
Description: Wrong string comparison
Details:

Looks like string comparison operators ignore spaces isnside of string.
Because of this sorting on text fields is wrong.

mdb=# select 'a z'::text>'ad'::text;
?column?
----------
t

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Yury Don (#1)
Re: BUG #2309: Wrong string comparison

"Yury Don" <yura@vpcit.ru> writes:

Looks like string comparison operators ignore spaces isnside of string.

It's not wrong, it's just following the rules of the locale. You should
initdb the database with LANG=C if you want plain ASCII sorting.

regards, tom lane

#3Volkan YAZICI
yazicivo@ttnet.net.tr
In reply to: Yury Don (#1)
Re: BUG #2309: Wrong string comparison

Hi,

On Mar 09 02:00, Yury Don wrote:

Looks like string comparison operators ignore spaces isnside of string.
Because of this sorting on text fields is wrong.

mdb=# select 'a z'::text>'ad'::text;
?column?
----------
t

PostgreSQL relies on your locale for collation. Therefore, first you
need to check if your locale settings are working. For instance:

$ TEXT="a z\nad"
$ echo -e $TEXT | LC_COLLATE=tr_TR.iso88599 sort
ad
a z
$ echo -e $TEXT | LC_COLLATE=C sort
a z
ad

Regards.

#4Yury Don
yura@vpcit.ru
In reply to: Volkan YAZICI (#3)
Re: BUG #2309: Wrong string comparison

On Friday 10 March 2006 12:36, Volkan YAZICI wrote:

Hi,

On Mar 09 02:00, Yury Don wrote:

Looks like string comparison operators ignore spaces isnside of string.
Because of this sorting on text fields is wrong.

mdb=# select 'a z'::text>'ad'::text;
?column?
----------
t

PostgreSQL relies on your locale for collation. Therefore, first you
need to check if your locale settings are working. For instance:

$ TEXT="a z\nad"
$ echo -e $TEXT | LC_COLLATE=tr_TR.iso88599 sort
ad
a z
$ echo -e $TEXT | LC_COLLATE=C sort
a z
ad

Regards.

My locale is KOI8-R and sorting in PostgreSQL corresponds to sorting in
locale. I just didn't expect that sorting will be this way ...

--
Best regards,
Yury Don