The caret ("^") may be either an anchor or a negating marker.
We may negate the string we are looking for by placing a negating caret at the beginning of the string like this:
SQL> -- create demo table
SQL> create table myTable(
2 id NUMBER(2),
3 value VARCHAR(50)
4 );
Table created.
SQL>
SQL> insert into myTable(id, value)values(1,'1234 4th St. Vancouver');
1 row created.
SQL> insert into myTable(id, value)values(2,'4 Maple Ct. New York');
1 row created.
SQL> insert into myTable(id, value)values(3,'4321 Green Blvd. London');
1 row created.
SQL> insert into myTable(id, value)values(4,'33 Third St. Toronto');
1 row created.
SQL> insert into myTable(id, value)values(5,'One First Drive. Queen');
1 row created.
SQL> insert into myTable(id, value)values(6,'1664 1/2 Springhill Ave');
1 row created.
SQL> insert into myTable(id, value)values(7,'665 Fall Ave. Linken');
1 row created.
SQL>
SQL> select * from mytable;
ID VALUE
---------- --------------------------------------------------
1 1234 4th St. Vancouver
2 4 Maple Ct. New York
3 4321 Green Blvd. London
4 33 Third St. Toronto
5 One First Drive. Queen
6 1664 1/2 Springhill Ave
7 665 Fall Ave. Linken
7 rows selected.
SQL>
SQL>
SQL> SELECT value
2 FROM myTable
3 WHERE REGEXP_LIKE(value,'[^gp]');
VALUE
--------------------------------------------------
1234 4th St. Vancouver
4 Maple Ct. New York
4321 Green Blvd. London
33 Third St. Toronto
One First Drive. Queen
1664 1/2 Springhill Ave
665 Fall Ave. Linken
7 rows selected.
SQL>
SQL>
SQL>
SQL> drop table myTable;
Table dropped.
SQL>