vaflya
@vaflya
Ничего личного, это всего лишь хобби.

Как осуществить поиск по таблице в Postgres с разным регистром?

Добрый день, в таблице содержатся имена и фамилии людей. Делаю поиск по таблице из nodejs
и вывожу на сайте. Проблема в том, что если записан Иван Иванов, то запрос с текстом "иван иванов" ничего не найдет. Если хранить все в нижнем регистре, то на сайте я не смогу корректно выводить фио с большой буквы. Что делать?

Использую: nodejs typeorm
  • Вопрос задан
  • 2505 просмотров
Пригласить эксперта
Ответы на вопрос 2
idShura
@idShura
Попробуй привести все в нижний регистр с помощью функции LOWER() (Приводить нужно поле в котором ищешь и текст поиска введенный пользователем)

upd LOWER() используй только в запросе, сами данные изменять не нужно
Ответ написан
Athanor
@Athanor
Лайк + Решение: не жмись, нажми
Есть несколько вариантов, например:
1. В запросе сделать условие WHERE full_name ilike %иван%. Ключевое здесь - "умный" оператор ilike, указывающий искать без учета регистра.
2. В запросе сделать условие WHERE lower(full_name) like lower(%иван%) - примерно то же самое, но не так красиво.
3. Использовать расширение CITEXT (https://www.postgresql.org/docs/9.4/citext.html), удобно если нужно учитывать например контроль уникальности в ключе. В столбцах CITEXT выражение 'foo@BAR.com' == 'FOO@bar.com'.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы