Почему «2»> «10»?

Почему «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)
20
задан Clodoaldo Neto 13 August 2011 в 23:44
поделиться