Обсуждение: Possible bug in Postgres String comparison routines
Hi, On my Postgres system ( PostgreSQL 7.1.2 on i686-pc-linux-gnu, compiled by GCC 2.96), I get the following odd behavior in string compares: # Works -- e (ASCII code 101) is after comma (ASCII code 44) select current_time where 'e' > ','; # Works -- adding a k to the front of both strings select current_time where 'ke' > 'k,'; # Works -- add some trailing characters. Note that since 'ke' > 'k,' # we should be able to add whatever trailing characters we want # and still get the same result select current_time where 'ken' > 'k, '; # Does not work!!! select current_time where 'kens' > 'k, P'; # Also does not work select current_time where 'ens' > ', P'; For "Works", I mean returns a result (the where expression evaluated true); "Does not work" means no result was returned. Is there something that I'm not understanding here, or is this a bug? Peter
Peter Breton <pbreton@MIT.EDU> writes:
> Is there something that I'm not understanding here, or is this a bug?
What locale are you using? Non-C locales have sorting rules more
complex than you seem to be expecting.
$ cat data
e
,
ke
k,
ken
k,
kens
k, P
ens
, P
$ LANG=C sort data
,
, P
e
ens
k,
k,
k, P
ke
ken
kens
$ LANG=en_US.iso88591 sort data
e
ens
ke
ken
kens
k,
k,
k, P
,
, P
$
regards, tom lane