У меня есть таблица с именем контактовКак найти все относительные акценты в вопросе выбора Postgresql?
id | name
----+------------------
44 | Aarón
Я пытаюсь выполнить запрос:
select id,name from contacts where name ilike 'Aaro%';
Он вернется (0 rows)
Я пытаюсь искать 'о' и также ожидается, что результат будет включать все акценты 'o' like '- '. Как я уже делал некоторые поисковые запросы, я нашел, что с помощью locale мне нужно установить сортировку. Так я установил параметры сортировки в Linux с помощью
sudo locale-gen --no-archive de_DE.utf-8
после этого я попытался установить параметры сортировки в базе данных PostgreSQL.
create collation de (LOCALE='de_DE.utf-8');
сортировка сгенерирована успешно. Я попытался перечислить эту сортировку, используя select * from pg_collation; и он есть.
после выполнения всего этого я снова попытался получить результат всех относительных ACCENT «O» по запросу:
select id,name from contacts where name ilike 'Aaro%';
но опять же я получил (0 rows)
Ultimatly Я хочу, чтобы запись «Aarón», когда я выполнить запрос выше.
Спасибо заранее.
http://dba.stackexchange.com/questions/124695/postgresql-translate-special- символов или вы можете определить самостоятельно. –
Сводка не будет изменять проверки на равенство и такие (например, 'LIKE',' ILIKE', '~' и т. Д.), Но вместо этого вы можете заказывать свои данные с помощью другого набора правил (на некоторых языках существуют строгие правила для упорядочения акцентированных символов) , В PostgreSQL типичным решением для вашей проблемы является 'unaccent()' (см. Ответы). – pozs