Thread: Ordering in SELECT statement
Hello,
I use the following command "SELECT * FROM employees ORDER BY name" (a very simple sql statement) the main thing here is that I get a list ordered without taking into accound the spaces. For example, I get the following listing:
ABAB
AB CD
ABD E
AB EF
and what I need is the following ("old fashion", that is, the "SPACE" is another character whose ASCII value is before any other LATIN letter's!!)
AB CD
AB EF
ABAB
ABD E
Does any one know how to order get an old fashioned SORT???
kdealba@uaaan.mx wrote: > > Hello, > > I use the following command "SELECT * FROM employees ORDER BY name" > (a very simple sql statement) the main thing here is that I get a > list ordered without taking into accound the spaces. For example, I > get the following listing: > ABAB > AB CD > ABD E > AB EF > > and what I need is the following ("old fashion", that is, the > "SPACE" is another character whose ASCII value is before any other > LATIN letter's!!) You'll want to read up on locales - you want the "C" locale. I'm afraid it'll mean dumping your database(s) and running initdb again. -- Richard Huxton Archonet Ltd
On Jun 26, 2007, at 14:41 , kdealba@uaaan.mx wrote: > and what I need is the following ("old fashion", that is, the > "SPACE" is another character whose ASCII value is before any other > LATIN letter's!!) > AB CD > AB EF > ABAB > ABD E Sorting is defined by the locale settings of your computer. I get the order you're looking for, and the my computer has LC_COLLATE="C". $ locale LANG= LC_COLLATE="C" LC_CTYPE="C" LC_MESSAGES="C" LC_MONETARY="C" LC_NUMERIC="C" LC_TIME="C" LC_ALL="C" # select * from sorts order by sort; sort ------- AB CD AB EF ABAB ABD E (4 rows) I haven't had any experience setting the locale on my computer, but that might be something you want to look into. Michael Glaesemann grzm seespotcode net
> On Jun 26, 2007, at 14:41 , kdealba@uaaan.mx wrote: >> and what I need is the following ("old fashion", that is, the "SPACE" >> is another character whose ASCII value is before any other LATIN >> letter's!!) >> AB CD >> AB EF >> ABAB >> ABD E What you don't want : peufeu=> SELECT column1 FROM (VALUES ('ABCD'), ('A BCD'), ('abcd'), ('ABcd'), ('AB'), ('AbC d')) AS foo ORDER BY column1; column1 --------- AB abcd AbC d ABcd ABCD A BCD (6 lignes) What you want : peufeu=> SELECT column1 FROM (VALUES ('ABCD'), ('A BCD'), ('abcd'), ('ABcd'), ('AB'), ('AbC d')) AS foo ORDER BY string_to_array( column1, ' ' ); column1 --------- A BCD AB AbC d abcd ABcd ABCD (6 lignes)