PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL неправилно сортиране

Поведение на сортиране за текст (включително char и varchar както и text тип) зависи от текущото съпоставяне от вашия локал.

Вижте предишните тясно свързани въпроси:

  • Сортиране на PostgreSQL
  • https://stackoverflow.com/q/21006868/398670

Ако искате да направите опростено сортиране по ASCII стойност, вместо правилно локализирано сортиране, следвайки правилата на местния ви език, можете да използвате COLLATE клауза

select * 
from test
order by title COLLATE "C" ASC

или променете глобално съпоставянето на базата данни (изисква изхвърляне и презареждане или пълно преиндексиране). На моята Fedora 19 Linux система получавам следните резултати:

regress=> SHOW lc_collate;
 lc_collate  
-------------
 en_US.UTF-8
(1 row)

regress=> WITH v(title) AS (VALUES ('#a'), ('a'), ('#'), ('a#a'), ('a#')) 
          SELECT title FROM v ORDER BY title ASC;
 title 
-------
 #
 a
 #a
 a#
 a#a
(5 rows)

regress=> WITH v(title) AS (VALUES ('#a'), ('a'), ('#'), ('a#a'), ('a#')) 
          SELECT title FROM v ORDER BY title COLLATE "C" ASC;
 title 
-------
 #
 #a
 a
 a#
 a#a
(5 rows)

PostgreSQL използва поддръжката за съпоставяне на вашата операционна система, така че е възможно резултатите да варират леко от хост ОС до хост ОС. По-специално, поне някои версии на Mac OS X имат значително нарушена обработка на съпоставяне на Unicode.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL:Уникално нарушение:7 ГРЕШКА:дублиращата се стойност на ключа нарушава уникалното ограничение users_pkey

  2. Ако PostgreSQL count(*) винаги е бавен, как да се пагинират сложни заявки?

  3. Пребройте кумулативната сума в Postgresql

  4. Ядро на Entity Framework - Съдържа, чувствителен ли е главният или малък регистър?

  5. потребителят postgres стартира процес, който използва всички процесори на 100%.