I'm using Oracle 10g trying to EXCLUDE entries that contain a -
or a _
with a caret in the character class in Oracle 10g. I can find the entries containing dash or underscore through:
WITH example
AS (SELECT 'AAAA-1' n FROM DUAL
UNION
SELECT 'AAAAA_1' FROM DUAL
UNION
SELECT 'AAAA' FROM DUAL)
SELECT *
FROM example
WHERE REGEXP_LIKE (n, '[_\-]')
I know I can get by with using NOT but how do I negate this with a caret (^)
? I've tried [^_\-]
which returns everything, [^[_\-]]
which returns nothing, and [^(_\-)]
which is invalid.
WITH example
AS (SELECT 'AAAA-1' n FROM DUAL
UNION
SELECT 'AAAAA_1' FROM DUAL
UNION
SELECT 'AAAA' FROM DUAL
UNION
SELECT 'AAAA\1' FROM DUAL
)
SELECT *
FROM example
WHERE REGEXP_LIKE (n, '^[^_-]*$')