Проблемы с поиском буквы &quot;Й&quot; в PostgreSQL 8.4
1) А какая у вас используется кодировка и локаль?

2) На запросах типа select '1' where 'Василий Иванов' ilike '%Й%'
 ошибка воспроизводится?

3) так, наверное, лучше строки склеивать:
AND first_name || ' ' || last_name ILIKE :search

Аналогичная ситуация. Скажем, в базе есть две строки с одинаковыми словами в кодировке UTF-8, локаль RU:
1. ханты-мансийский автономный округ
2. ханты-мансийский автономный округ
Как видно строки идентичны, но при запросе select * from test where like (%мансийский%); получаем результат равный одной строке с номером 1. В то же время, если я ввожу запрос select * from test where like (%мансийскии%); то получаю результат равный одной строке с номером 2. При этом, обратите внимание, запросы имеют разные окончания "Й" и "И".