From: | "Scott Marlowe" <scott(dot)marlowe(at)gmail(dot)com> |
---|---|
To: | theerasak(at)thns(dot)co(dot)th |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: String comparison problem. |
Date: | 2008-05-30 04:41:02 |
Message-ID: | dcc563d10805292141iea797a7jb23f9a4e91a1ed1c@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On Thu, May 29, 2008 at 9:45 PM, Theerasak Maneeneim
<theerasak(at)thns(dot)co(dot)th> wrote:
> Dear All,
>
> I have some problem with string comparison. I use postgresql
> 8.3.1,UTF8 encoding, on CentOS 5.5. Why dose the result of SQL statement :
> "select '1.1' < '101';" is false but "select '1.1'::bytea < '101'::bytea;"
> is ture?
The UTF encoding isn't what's important here, it's your locale, which
is likely something like en_US (but different, whatever you'd have in
your country). This locale will be collated (i.e. sorted etc.) by a
set of rules for the language where you live.
For instance, with a list like:
a dc
abc
a bc
adc
and an order by on it in locale en_US I get this ordering:
abc
a bc
adc
a dc
Why? Because according to the rules of english, spaces don't count.
If you want byte code ordering, then you need to use Locale=C when you
run initdb. Locale can only be changed at initdb time.
From | Date | Subject | |
---|---|---|---|
Next Message | Allan Kamau | 2008-05-30 09:21:41 | Weeks elapsed to Months elapsed conversion |
Previous Message | Theerasak Maneeneim | 2008-05-30 03:45:44 | String comparison problem. |