Обсуждение: Odd sort behaviour

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

Odd sort behaviour

От
Rob Sargent
Дата:
Since when does "." sort as "nothing at all"
This select
   select           distinct u.user_name   from           subscriber_user u,           subscription s,
subscription_templatet   where           u.id = s.subscriber_entity_id           and s.template_id = t.id           and
t.application_id= (select id from application where   short_name ='books')   order by u.user_name   \p\g
 

over this table def.(for user_name)
    \d subscriber_user             Table "public.subscriber_user"   +-----------------------+---------+---------------+
 |        Column         |  Type   |   Modifiers   |   +-----------------------+---------+---------------+   | id
            | bigint  | not null      |   | last_name             | text    |               |   | first_name
|text    |               |   | user_name             | text    |               |   | email_address         | text    |
            |   | force_password_change | boolean | default false |   | title                 | text    |
|  +-----------------------+---------+---------------+   Indexes:       "subscriber_user_pkey" PRIMARY KEY, btree (id)
    "idx__subscriber_users__lower_email_address" UNIQUE, btree   (lower(email_address))
"idx__subscriber_users__lower_user_name"UNIQUE, btree   (lower(user_name))   Foreign-key constraints:
"subscriber_user_id_fkey"FOREIGN KEY (id) REFERENCES subscriber(id)
 


is producing this sorted??? output

   | adrianohazim@hotmail.com                   |   | adx008@show.org.tw                         |   | aecheniq@mac.com
                         |   | a.ecke70@gmx.de                            |   | aelefant@unina.it
  |   | aeo_tw@hotmail.com                         |   | a.fischedick@t-online.de                   |   |
aflores3432@gmail.com                     |   | afried@advancedneurosurgeons.com           |   | agave007@comcast.net
                   |   | agelsinger@amirsys.com                     |   | agis1doc@yahoo.gr                          |
 

using this client
   Welcome to psql 8.3.7, the PostgreSQL interactive terminal.

and this server
   show server_version;   +----------------+   | server_version |   +----------------+   | 8.3.7          |
+----------------+  (1 row)
 
   nsm=# show server_encoding
   +-----------------+   | server_encoding |   +-----------------+   | UTF8            |   +-----------------+   (1
row)






Re: Odd sort behaviour

От
Scott Marlowe
Дата:
On Tue, Sep 1, 2009 at 3:01 PM, Rob Sargent<robjsargent@gmail.com> wrote:
> Since when does "." sort as "nothing at all"

Since you set your locale equal to something like en_US instead of C


Re: Odd sort behaviour

От
Rob Sargent
Дата:
How many ways might one accidentally do that I wonder.

Scott Marlowe wrote:
> On Tue, Sep 1, 2009 at 3:01 PM, Rob Sargent<robjsargent@gmail.com> wrote:
>   
>> Since when does "." sort as "nothing at all"
>>     
>
> Since you set your locale equal to something like en_US instead of C
>   


Re: Odd sort behaviour

От
Greg Stark
Дата:
On Tue, Sep 1, 2009 at 11:31 PM, Rob Sargent<robjsargent@gmail.com> wrote:
> How many ways might one accidentally do that I wonder.

Well most operating system distributions ask you when you install them
what region you're in and use a collation for that region.

In 8.4 you can check what collation a database is set to use with \l
in psql. In 8.3 the entire "cluster" has a single collation which you
can see using "show lc_collate".

You can see how your system's collations work by running sort:

$ LC_ALL=c sort s
a.ecke70@gmx.de
a.fischedick@t-online.de
adrianohazim@hotmail.com
adx008@show.org.tw
aecheniq@mac.com
aelefant@unina.it
aeo_tw@hotmail.com
aflores3432@gmail.com
afried@advancedneurosurgeons.com
agave007@comcast.net
agelsinger@amirsys.com
agis1doc@yahoo.gr

$ LC_ALL=en_US sort s
adrianohazim@hotmail.com
adx008@show.org.tw
aecheniq@mac.com
a.ecke70@gmx.de
aelefant@unina.it
aeo_tw@hotmail.com
a.fischedick@t-online.de
aflores3432@gmail.com
afried@advancedneurosurgeons.com
agave007@comcast.net
agelsinger@amirsys.com
agis1doc@yahoo.gr

-- 
greg
http://mit.edu/~gsstark/resume.pdf


Re: Odd sort behaviour

От
Rob Sargent
Дата:
OK, I'm waking up now.  My locale is as Scott suspected, en-US.UTF-8, 
and of
course my server too.

I guess I never really left "C" intellectually :) and we have a server that
thinks SQL-ASCII is cool and comparing lists of names and emails between 
that server
and my local utf-8 one was rather perplexing.

I'm sure this a life-time's worth of discussion on the merits of 
treating "."
as nothing when sorting....

Sorry for the noise.


Greg Stark wrote:
> On Tue, Sep 1, 2009 at 11:31 PM, Rob Sargent<robjsargent@gmail.com> wrote:
>   
>> How many ways might one accidentally do that I wonder.
>>     
>
> Well most operating system distributions ask you when you install them
> what region you're in and use a collation for that region.
>
> In 8.4 you can check what collation a database is set to use with \l
> in psql. In 8.3 the entire "cluster" has a single collation which you
> can see using "show lc_collate".
>
> You can see how your system's collations work by running sort:
>
> $ LC_ALL=c sort s
> a.ecke70@gmx.de
> a.fischedick@t-online.de
> adrianohazim@hotmail.com
> adx008@show.org.tw
> aecheniq@mac.com
> aelefant@unina.it
> aeo_tw@hotmail.com
> aflores3432@gmail.com
> afried@advancedneurosurgeons.com
> agave007@comcast.net
> agelsinger@amirsys.com
> agis1doc@yahoo.gr
>
> $ LC_ALL=en_US sort s
> adrianohazim@hotmail.com
> adx008@show.org.tw
> aecheniq@mac.com
> a.ecke70@gmx.de
> aelefant@unina.it
> aeo_tw@hotmail.com
> a.fischedick@t-online.de
> aflores3432@gmail.com
> afried@advancedneurosurgeons.com
> agave007@comcast.net
> agelsinger@amirsys.com
> agis1doc@yahoo.gr
>
>   


Re: Odd sort behaviour

От
Lew
Дата:
Rob Sargent wrote:
> I'm sure this a life-time's worth of discussion on the merits of 
> treating "."
> as nothing when sorting....

Well, every sorted reference work in society at large seems to have a 
different idea of how to sort - just compare the phone book to the dictionary.  That's the point of locales, to
formalizesuch rules so that you can coerce 
 
your system to follow one or another set as needed.  That way you don't have 
to agree or disagree with any rule, such as ignoring punctuation in the sort, 
simply be aware of whether it applies to any given situation.

-- 
Lew