Обсуждение: BUG #1590: Comparison Operation with Strings
The following bug has been logged online:
Bug reference: 1590
Logged by: Michaela
Email address: rambo1503-postgresql@yahoo.de
PostgreSQL version: 8.0.1
Operating system: SuSE Linux 9.1
Description: Comparison Operation with Strings
Details:
Hello!
conditions:
-----------
Our database is defined with SQL_ASCII. We also tested Latin1.
CREATE TABLE test(feld varchar(100))
INSERT INTO test VALUES ('ABC');
INSERT INTO test VALUES ('?');
INSERT INTO test VALUES ('100');
INSERT INTO test VALUES ('B');
INSERT INTO test VALUES ('? ABC');
INSERT INTO test VALUES ('Z');
We want to use e.g. the following conditions:
1.example
---------
select * from test where field>='?' and field<'A'
result:
?
100
But it doesn`t find the '? ABC'. And '100' is wrong.
This command should give me this output:
?
? ABC
2.example
---------
select * from test where feld>='?' and feld<'@'
result:
?
It doesn`t find the '? ABC'.
This command should give me this output:
?
? ABC
3.example
---------
select * from test where feld>='A' and feld<'C'
result:
ABC
B
? ABC
the correct result would be:
ABC
B
We tested it with PostgreSQL version 7.2.1. There it works.
Kind Regards
Michaela
"Michaela" <rambo1503-postgresql@yahoo.de> writes:
> Our database is defined with SQL_ASCII. We also tested Latin1.
This is determined by locale, not encoding. I suspect you have a
non-C locale selected.
regards, tom lane
On Thu, 7 Apr 2005, Michaela wrote: > The following bug has been logged online: > > Bug reference: 1590 > Logged by: Michaela > Email address: rambo1503-postgresql@yahoo.de > PostgreSQL version: 8.0.1 > Operating system: SuSE Linux 9.1 > Description: Comparison Operation with Strings > Details: > > Hello! > > conditions: > ----------- > Our database is defined with SQL_ASCII. We also tested Latin1. This depends on the locale, not the encoding. Specifically, for example, 'A' < '? ABC' in en_US and probably other similar locales. For the data you give, en_US and de_DE appear to sort as: ? 100 ABC ? ABC B Z If you want byte order sorting, you need to make sure to initdb in C locale.