Сравнение строк в PosqtgreSQL - PullRequest
       13

Сравнение строк в PosqtgreSQL

1 голос
/ 21 сентября 2010

Я пытаюсь сравнить строки в PostgreSQL.

Вот запросы, которые я выполняю:

select 'UK (z'>'Ukraine';

Этот возвращает true;

Тогда я попробую следующее:

select 'UK ('>'Ukraine';

Этот возвращает false;

Я думаю, что оба они должны возвращать false, и на другом сервере PostgreSQL он ведет себя правильно. Но главный сервер выдает неправильные результаты в таких операциях. Что я делаю не так?

1 Ответ

1 голос
/ 17 марта 2013

Если вы сомневаетесь, попробуйте:

SHOW lc_collate;

Это покажет вам параметры сортировки по умолчанию.

Теперь вы можете указать параметры сортировки на уровне столбца или уровне запроса.Поскольку ваш вопрос находится на уровне запроса, вы можете:

select 'UK (z'::text > 'Ukraine' COLLATE "C"; -- and
select 'UK (z'::text > 'Ukraine' COLLATE "ucs_basic"; -- both return false

Что происходит на самом деле в порядках сортировки на естественном языке, игнорируя пробелы и не алфавитно-цифровые символы, поэтому первым является вопрос: «UKz»> «Украина», чтода, и второй вопрос: является ли «Великобритания» больше, чем «Украина», которой она не является.

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