Заказ По запросу игнорирует знаки препинания

Это с Postgresql.

Столбец в таблице содержит строковые значения с пунктуациями. Значения «aac», «.aaa», «aa_b» и т. Д. Когда этот столбец указан в предложении order by, порядок результатов почти случайный. Строки, начинающиеся с периода, должны появляться сверху, чего не происходит. Они появляются где-то посередине.

Удивительно, но это поведение наблюдается только с одной базой данных. Тот же запрос отлично работает с базой данных на другом хосте.

Какая может быть причина?

Поведение «порядок по» (строковое сравнение) зависит от локали кластера .

Сначала проверьте EXPLAIN и посмотрите, как это делается.

  • Если он вызывает пользовательскую функцию сравнения, посмотрите на эту функцию.
  • Если он идет по индексу, посмотрите, использует ли этот индекс неправильную функцию сортировки (та, которая не является транзитивной или какой-то такой).

Если EXPLAIN не показывает ничего странного, проверьте локаль кластера – возможно, он выполняет сравнение, используя локаль, которая игнорирует определенные символы.