Puedes usar like
:
select t.*
from crappytable t
where ';' || crappycolumn || ';' like '%;2;%' or
';' || crappycolumn || ';' like '%;4;%';
Parece que sabes que almacenar listas de valores en una sola columna es una mala idea, así que me ahorraré la arenga;)
EDITAR:
Si no te gusta like
, puede usar regexp_like()
así:
where regexp_like(';' || crappycolumn || ';', ';2;|;4;')