Обсуждение: BUG #15919: When sorting, does the result show that S > s is correct?
BUG #15919: When sorting, does the result show that S > s is correct?
От
PG Bug reporting form
Дата:
The following bug has been logged on the website:
Bug reference: 15919
Logged by: 强 魏
Email address: 1726002692@qq.com
PostgreSQL version: 11.4
Operating system: CentOS Linux release 7.6.1810 (Core)
Description:
postgres@[local]:5433[postgres]#select * from t order by info desc;
+------+
| info |
+------+
| S |
| s |
+------+
(2 rows)
Time: 0.718 ms
postgres@[local]:5433[postgres]#select * from t order by info asc;
+------+
| info |
+------+
| s |
| S |
+------+
(2 rows)
Time: 0.789 ms
postgres@[local]:5433[postgres]#select ascii('s') AS "s",ascii('S') AS
"S";
+-----+----+
| s | S |
+-----+----+
| 115 | 83 |
+-----+----+
(1 row)
Time: 0.381 ms
postgres@[local]:5433[postgres]#show lc_collate
postgres-# ;
+-------------+
| lc_collate |
+-------------+
| en_US.UTF-8 |
+-------------+
(1 row)
Time: 0.407 ms
PG Bug reporting form <noreply@postgresql.org> writes:
> postgres@[local]:5433[postgres]#select * from t order by info asc;
> +------+
> | info |
> +------+
> | s |
> | S |
> +------+
> (2 rows)
This is the expected behavior for en_US locale, as you can easily
confirm outside of Postgres:
$ (echo s; echo S) | LANG=en_US sort
s
S
Perhaps you are confusing it with C locale?
$ (echo s; echo S) | LANG=C sort
S
s
regards, tom lane