One option is to replace everything that's valid with NULL
, and what remains is invalid:
SQL> with test (col) as
2 (select 'Robert@jr23' from dual union all
3 select 'Kevin#123' from dual union all
4 select 'bob@jr' from dual union all
5 select 'mike$dr' from dual union all
6 select 'Alex-jr' from dual union all
7 select 'Robert''jr' from dual union all
8 select 'Brian jr' from dual
9 )
10 select col
11 From test
12 where regexp_replace(col, '[[:alpha:]]|[[:digit:]]|-|''', null) is not null;
COL
-----------
Robert@jr23
Kevin#123
bob@jr
mike$dr
Brian jr
SQL>
I'm confused about what you, actually, want to get as a result. Here are some examples which show result of such a regular expression; which IDs do you want to get as a result?
SQL> with test (id, col) as
2 (select 1, 'Robert@jr23' from dual union all
3 select 2, 'Kevin#123' from dual union all
4 select 3, 'bob@jr' from dual union all
5 select 4, 'mike$dr' from dual union all
6 select 5, 'Alex-jr' from dual union all
7 select 6, 'Robert''jr' from dual union all
8 select 7, 'Brian jr' from dual union all
9 select 8, 'Brian10' from dual
10 )
11 select col,
12 regexp_replace(col,
13 '[[:alpha:]]|[[:digit:]]|[[:space:]]|-|''', null) result
14 from test;
COL RESULT
----------- ----------
Robert@jr23 @
Kevin#123 #
bob@jr @
mike$dr $
Alex-jr
Robert'jr
Brian jr
Brian10
8 rows selected.
SQL>
One of your comments says:
select a customer name where there must be a special character or numbers (except space, Hyphen and apostrophe)
which means that numbers and special characters should be treated as "equal". If that's so, does this help?
SQL> with test (id, col) as
2 (select 1, 'Robert@jr23' from dual union all
3 select 2, 'Kevin#123' from dual union all
4 select 3, 'bob@jr' from dual union all
5 select 4, 'mike$dr' from dual union all
6 select 5, 'Alex-jr' from dual union all
7 select 6, 'Robert''jr' from dual union all
8 select 7, 'Brian jr' from dual union all
9 select 8, 'Brian10' from dual
10 )
11 select id, col
12 from test
13 where regexp_replace(col, '[[:alpha:]]|[[:space:]]|-|''', '')
14 is not null;
ID COL
---------- -----------
1 Robert@jr23
2 Kevin#123
3 bob@jr
4 mike$dr
8 Brian10
SQL>