Richard Neill <rn214@hermes.cam.ac.uk> writes:
> This ordering is perverse!
No kidding.
> No matter what the priority is of the
> different characters, I cannot understand how the above can arise.
You are assuming that it's a byte-at-a-time process. It's not. I
believe the first pass considers only letters and digits.
You can easily prove to yourself that it's not just Postgres. Here's
an example on my Linux laptop:
[tgl@g3 tgl]$ cat zzz
Cymbal #1
Cymbal - 18 inch
Cymbal #2
[tgl@g3 tgl]$ LC_ALL=C sort zzz
Cymbal #1
Cymbal #2
Cymbal - 18 inch
[tgl@g3 tgl]$ LC_ALL=en_GB sort zzz
Cymbal #1
Cymbal - 18 inch
Cymbal #2
[tgl@g3 tgl]$
regards, tom lane