Почему '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)