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;')