create table testx
( val1 varchar2(50));
insert into testx (val1) values ('Some ' || chr(9) || 'bad string');
insert into testx (val1) values ('Some nice string with 123 numbers');
commit;
select val1, regexp_instr(val1, '[^[:alnum:] ]') from testx;
Функция выбора будет возвращать 0, если строка содержит только буквенно-цифровые или пробелы, в противном случае> 0.
Таким образом, вы можете добавить предложение where, чтобы получить только «плохие» строки:
select val1 from testx where regexp_instr(val1, '[^[:alnum:] ]') > 0;
Конечно, вы можете изменить это по мере необходимости в зависимости от вашего определения «специальных символов».
РЕДАКТИРОВАТЬ: если вас не интересует пометка пунктуации, попробуйте:
select val1 from testx where regexp_instr(val1, '[^[:alnum:] [:punct:]]') > 0;
снова, при необходимости измените ваше определение