Обсуждение: Sorting when "*" is the initial character
I encountered what looks like unusually sorting behavior, and I'm wondering if
anyone can tell me if this is supposted to happen (and then if so, why) or if
this is a bug:
CREATE TABLE sample_table
(
account_id varchar(4),
account_name varchar(25)
)
WITHOUT OIDS;
INSERT INTO sample_table VALUES ('100', 'First account');
INSERT INTO sample_table VALUES ('110', 'Second account');
INSERT INTO sample_table VALUES ('120', 'Third account');
INSERT INTO sample_table VALUES ('*125', 'Fourth account');
INSERT INTO sample_table VALUES ('*115', 'Fifth account');
SELECT * FROM sample_table ORDER BY 1;
account_id,account_name
100,First account
110,Second account
*115,Fifth account
120,Third account
*125,Fourth account
I would expect to see
account_id,account_name
*115,Fifth account
*125,Fourth account
100,First account
110,Second account
120,Third account
On Mon, Feb 07, 2005 at 16:20:36 -0500, Berend Tober <btober@seaworthysys.com> wrote: > > SELECT * FROM sample_table ORDER BY 1; > > account_id,account_name > 100,First account > 110,Second account > *115,Fifth account > 120,Third account > *125,Fourth account > > I would expect to see > > account_id,account_name > *115,Fifth account > *125,Fourth account > 100,First account > 110,Second account > 120,Third account This depends on your locale.
On Mon, 7 Feb 2005, Berend Tober wrote: > I encountered what looks like unusually sorting behavior, and I'm wondering if > anyone can tell me if this is supposted to happen (and then if so, why) or if > this is a bug: If you ran initdb with a locale such as en_US, a result like what you got is expected. AFAIR, the collation rules for the locale are defined to not use symbols and spaces in the first pass comparison so '110' < '*115' < '120'.
hi,
Berend Tober wrote, On 2/7/2005 22:20:
> I encountered what looks like unusually sorting behavior, and I'm wondering if
> anyone can tell me if this is supposted to happen (and then if so, why) or if
> this is a bug:
>
> CREATE TABLE sample_table
> (
> account_id varchar(4),
> account_name varchar(25)
> )
> WITHOUT OIDS;
>
> INSERT INTO sample_table VALUES ('100', 'First account');
> INSERT INTO sample_table VALUES ('110', 'Second account');
> INSERT INTO sample_table VALUES ('120', 'Third account');
> INSERT INTO sample_table VALUES ('*125', 'Fourth account');
> INSERT INTO sample_table VALUES ('*115', 'Fifth account');
>
> SELECT * FROM sample_table ORDER BY 1;
>
> account_id,account_name
> 100,First account
> 110,Second account
> *115,Fifth account
> 120,Third account
> *125,Fourth account
>
> I would expect to see
>
> account_id,account_name
> *115,Fifth account
> *125,Fourth account
> 100,First account
> 110,Second account
> 120,Third account
order by case when account_id like '*%' then 0 else 1 end
C.
On Tue, 8 Feb 2005 01:10 pm, CoL wrote: > hi, > > Berend Tober wrote, On 2/7/2005 22:20: > > I encountered what looks like unusually sorting behavior, and I'm wondering if > > anyone can tell me if this is supposted to happen (and then if so, why) or if > > this is a bug: > > > > > > SELECT * FROM sample_table ORDER BY 1; > > > > account_id,account_name > > 100,First account > > 110,Second account > > *115,Fifth account > > 120,Third account > > *125,Fourth account > > > > I would expect to see > > > > account_id,account_name > > *115,Fifth account > > *125,Fourth account > > 100,First account > > 110,Second account > > 120,Third account With 8.0.0 C local, SQL_ASCII Database, I get the expected output. Regards Russell Smith
> On Tue, 8 Feb 2005 01:10 pm, CoL wrote: >> hi, >> >> Berend Tober wrote, On 2/7/2005 22:20: >> > I encountered what looks like unusually sorting behavior, and I'm >> wondering if >> > anyone can tell me if this is supposted to happen (and then if so, why) or >> if >> > this is a bug: -------------- > With 8.0.0 C local, SQL_ASCII Database, I get the expected output. > Russell Smith -------------- > order by case when account_id like '*%' then 0 else 1 end > C. Thanks. It was pointed out to me that this behavior is normal and is dependent on the locale setting.