BUG #2309: Wrong string comparison
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
"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
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.
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?
----------
tPostgreSQL 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
adRegards.
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