You can do this by adding a comma to the beginning and end of the string you're checking, and then comparing it to ,3, like so:
with sample_data as (select '1,2,13,14' str from dual union all
select '11,22,3' str from dual union all
select '3,44,5' str from dual union all
select '19,3,394,49' str from dual union all
select '33,20' str from dual union all
select '3' str from dual union all
select '33,303' str from dual)
select str,
instr(','||str||',', ',3,') instr_3,
case when ','||str||',' like '%,3,%' then 'Y'
else 'N'
end is_3_present
from sample_data;
STR INSTR_3 IS_3_PRESENT
----------- ---------- ------------
1,2,13,14 0 N
11,22,3 7 Y
3,44,5 1 Y
19,3,394,49 4 Y
33,20 0 N
3 1 Y
33,303 0 N
I've given you a couple of different ways of checking.