select * from tbl
where
array(select x[1] from regexp_matches(name_matched, '([a-zA-Z0-9]+)', 'g') as x) <@
array(select x[1] from regexp_matches(name, '([a-zA-Z0-9]+)', 'g') as x);
или, чтобы сделать его короче:
create function regexp_matches_array(astr text, apattern text)
returns text[]
language sql
immutable
strict
as $func$
select array_agg(x[1]) from regexp_matches(astr, apattern, 'g') as x
$func$
select * from tbl
where
regexp_matches_array(name_matched, '([a-zA-Z0-9]+)') <@
regexp_matches_array(name, '([a-zA-Z0-9]+)');
Обратите внимание, что при этом не учитывается порядок слов.