Order By запрос игнорирует знаки препинания - PullRequest
0 голосов
/ 10 апреля 2009

Это с Postgresql.

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

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

Что может быть причиной этого?

Ответы [ 2 ]

1 голос
/ 10 апреля 2009

Поведение "упорядочить по" (сравнение строк) зависит от языкового стандарта кластера .

0 голосов
/ 10 апреля 2009

Сначала проверьте ОБЪЯСНЕНИЕ и посмотрите, как это происходит.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...