Почему «2» с начальным пробелом больше, чем «10»?
select ' 2' > '10';
?column?
----------
t
(1 row)
Я пробовал это с сопоставлением английского языка latin1 и utf8:
List of databases
Name | Owner | Encoding | Collation | Ctype | Access privileges
-----------+------------+-----------+------------------+------------------+-----------------------
cpn | cpn | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
teste | cpn | LATIN1 | en_US.ISO-8859-1 | en_US.ISO-8859-1 |
Я знаю, что это связано с типом, потому что при приведении он работает, как ожидалось:
teste=> select ' 2'::char > '10';
?column?
----------
f
(1 row)
Что именно здесь происходит?
РЕДАКТИРОВАТЬ:
Все вышесказанное было сделано с 8.4.8 в Fedora 13. Но я только что протестировал с 9.04 в Centos 6 с тем же результатом:
select ' 2' > '10';
?column?
----------
t
(1 row)
Список баз данных
Name | Owner | Encoding | Collation | Ctype | Access privileges
-----------+------------+-----------+-------------+-------------+-----------------------
cpn | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
Новое редактирование:
Это еще больше сбивает с толку :
select ' ' > '1';
?column?
----------
f
(1 row)