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

PostgreSQL игнорира тиретата при подреждане

Това е така, защото da_DK.utf8 локал го дефинира по този начин. Помощни програми, съобразени с локала на Linux, например sort също ще работи по този начин.

Вашият convert_to(name, 'latin1') ще се счупи, ако намери знак, който не е в латинския набор от знаци 1, например , така че това не е добро решение.

Можете да използвате order by convert_to(name, 'SQL_ASCII') , което ще игнорира локално дефинирано сортиране и просто ще използва байтови стойности.

Грозна хак редакция:

order by
  (
    ascii(name) between ascii('a') and ascii('z')
    or ascii(name) between ascii('A') and ascii('Z')
    or ascii(name)>127
  ),
  name;

Това първо ще сортира всичко, което започва с ASCII, което не е буква. Това е много грозно, защото сортирането по-нататък в низ би се държало странно, но може да е достатъчно добро за вас.



  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:объркване в име на таблица/схема

  2. pgpredict – Предсказуем анализ в PostgreSQL

  3. неразпознат автоматичен конфигурационен параметър в PostgreSQL NodeJS

  4. PreparedStatement е много бавен, но ръчната заявка е бърза

  5. Мога ли да използвам EXCEPTIONs в FOR LOOP, за да принудя продължение при грешка?