Thread: sorting goofiness
I'm experiencing some goofiness with the order by clause on postgres. I'm running the 7.2 install from redhat: **** [hroberts@h2o h2o]$ rpm -q postgresql-server postgresql-server-7.2-1PGDG **** When I try to sort by a text column, I get odd results: **** h2o_hroberts=# select ''''||foo||'''' as foo from bar order by foo; foo ----------------------- 'a' 'a a' 'aaa' 'a b' 'ab ' 'abb' 'a l' 'a l' 'alyxbqu lynscw gshi' 'a n' 'a n' 'an' 'a nkp' 'ann' 'a o' 'b' 'bb b' 'bbbb' (18 rows) **** "foo" is just a text field. The determination of whether a string with a space at a given location should be sorted before a string with non-space at the same location seems to depend on a number of variables including the total length of the string and the character following the space. In my elementary school career, I learned that a space should always sort before a non-space. Am I missing something here ? -hal
On 1 Apr 2002, Hal Roberts wrote: > h2o_hroberts=# select ''''||foo||'''' as foo from bar order by foo; > foo > ----------------------- > 'a' > 'a a' > 'aaa' > 'a b' > 'ab ' > 'abb' > 'a l' > 'a l' > 'alyxbqu lynscw gshi' > 'a n' > 'a n' > 'an' > 'a nkp' > 'ann' > 'a o' > 'b' > 'bb b' > 'bbbb' > (18 rows) > **** > > "foo" is just a text field. The determination of whether a string with > a space at a given location should be sorted before a string with > non-space at the same location seems to depend on a number of variables > including the total length of the string and the character following the > space. In my elementary school career, I learned that a space should > always sort before a non-space. > > Am I missing something here ? You're probably using a locale other than C (such as en_US if you're in the US) which has different sorting rules. If you put the above data in a text file and do commands like: sort file LANG="C" sort file LANG="en_US" sort file You'll see differences in the sort order.