Ваш запрос выдает тот же результат, что и в следующем выражении без регулярного выражения LIKE
с использованием массива
SELECT *
FROM elements
WHERE lower(name) LIKE ANY(ARRAY['%hap%', '%bir%']);
Таким образом, чтобы выбрать из элементов, только если столбец содержит все строки массива, вы изменяетеэто от ANY
до ALL
SELECT *
FROM elements
WHERE lower(name) LIKE ALL(ARRAY['%hap%', '%bir%']);
Демо