В нескольких SO-сообщениях OP запросил эффективный способ поиска текстовых столбцов без учета регистра.Как сделать мою базу данных postgresql использовать регистр без учета регистра?
Насколько я понял, наиболее эффективным способом является наличие базы данных с нечувствительной к регистру сортировкой. В моем случае я создаю базу данных с нуля, поэтому у меня есть идеальный контроль над сортировкой БД. Единственная проблема в том, что я понятия не имею, как ее определить и не смог найти ни одного примера.
Пожалуйста, покажите мне, как создать базу данных с нечувствительной к регистру сортировкой.
Я использую postgresql 9.2.4.
РЕДАКТИРОВАТЬ 1
Расширение CITEXT
является хорошим решением. Тем не менее, он имеет некоторые ограничения, как описано в документации. Я, конечно, буду использовать его, если не будет лучшего способа.
Я хотел бы подчеркнуть, что хочу ВСЕ операции с строкой нечувствительны к регистру. Использование CITEXT
для каждого поля TEXT
является одним из способов. Однако использование нечувствительного к регистру сопоставления было бы лучшим, если это вообще возможно.
В настоящее время https://stackoverflow.com/users/562459/mike-sherrill-catcall говорит, что PostgreSQL использует любые сопоставления, предоставляемые базовой системой. Я не возражаю против того, чтобы ОС отображала нечувствительность к регистру. Единственная проблема, о которой я не знаю, как это сделать.
PostgreSQL использует любые параметры сортировки базовая операционная система предоставляет. Системная таблица «pg_collation» заполняется initdb. Используйте 'select * from pg_collation;', чтобы увидеть, какие коллизии найдены. –
Это не отвечает на мой вопрос. – mark
Вы можете попытаться использовать ['this'] (http://www.postgresql.org/docs/current/static/citext.html) Расширение Postgres –