Вы можете использовать специальную функцию системы типов PostgreSQL:
SELECT *
FROM tbl t
WHERE t::text LIKE '%999999%';
Для каждой таблицы, создаваемой в PostgreSQL, существует составной тип с одинаковым именем. И есть text
представление для каждого типа в PostgreSQL (для значений ввода / вывода).
Таким образом, вы можете просто привести всю строку к text
, и если строка '999999' содержится в любом столбце (точнее, в представлении text
), он гарантированно будет показан в запросе выше.
Вы не можете полностью исключить ложных срабатываний , хотя разделители и / или декораторы, используемые Postgres для представления строки, могут быть частью поискового запроса. Это просто очень маловероятно. И, конечно же, это не относится к вашему поисковому запросу "999999".
Недавно был очень похожий вопрос по codereview.SE. Я добавил еще несколько объяснений в свой ответ там .