Сортировка строк в лексeграфическом порядке postgresql

У меня есть простой запрос. Он Джойнит таблицы по полю nickname таблицы profile и выводит поля таблицы profile в отсортированном по nickname порядке.

SELECT  profile.nickname, profile.fullname, profile.about, profile.email
FROM profile
LEFT JOIN thread ON profile.nickname = thread.author
LEFT JOIN post On profile.nickname = post.author
WHERE
(post.forum = 'oyJp6-98S25fr' OR thread.forum = 'oyJp6-98S25fr')
AND
CASE WHEN null IS NOT NULL
THEN nickname > ''
ELSE true
END
GROUP BY profile.nickname, profile.fullname, profile.about, profile.email
ORDER BY profile.nickname  LIMIT 100;

Проблема в том, что сортировка почему то происходит неправильно. nicname является типом CITEXT, поэтому сортировка происходит регистро независимо. Вот пример отсортированных данных.

Как можно увидеть из скрина 4 и 5 позиции должны быть первыми, так как их вторая часть (после точки) начинается с символов . и _ которые в ascii стоят до букв. У меня есть тест на правильную выборку, поэтому я точно знаю что выборка приведенная на скрине неправильная. Подскаэите почему так происходит и как устранить эту проблему. введите сюда описание изображения


Ответы (0 шт):