Você pode usar
like :select t.*
from crappytable t
where ';' || crappycolumn || ';' like '%;2;%' or
';' || crappycolumn || ';' like '%;4;%';
Você parece saber que armazenar listas de valores em uma única coluna é uma má ideia, então vou poupar o discurso;)
EDITAR:
Se você não gosta de
like , você pode usar regexp_like() assim:where regexp_like(';' || crappycolumn || ';', ';2;|;4;')