Доброе утро, уважаемые хабражители. Столкнулся сейчас со странным поведением PostgreSQL, при поиске по имени и фамилии пользователей.
Волей случая, приходится пользоваться PostgreSQL 8.4, и столкнулся с проблемой.
В запросе есть некоторая строка:
AND (ARRAY_TO_STRING(ARRAY[first_name, last_name] , ' ') ILIKE :search
В базе есть, к примеру, три человека, «Василий Иванов», «Ингеборга Дапкунайте» и «Михаил Михайлов».
Пытаюсь вытащить из таблицы все записи, для которых в указанном в запросе выше параметре подставляю просто одну букву «Й».
Результат: находятся Ингеборга и Михаил, Василий же отметается из результата.
Получается, проблема происходит в том случае, если буква «Й» стоит на конце первого из двух соединяемых слов, в данном случае, «Василий».
Вопрос — почему так происходит, и как этого можно избежать?