Testare la mancata corrispondenza come questo può diventare complicato, quindi ti consiglio di testare una corrispondenza e negare il risultato.
Non inizia con abc :
WHERE NOT REGEXP_LIKE(myString, '^abc')
Non termina con abc :
WHERE NOT REGEXP_LIKE(myString, 'abc$')
Per quanto riguarda il motivo per cui non funziona, come dice @DavidKnipe nella sua risposta:è perché stai usando classi di caratteri. La regex ^[^(abc)] analizza in questo modo:
- Il primo
^dice "ancora all'inizio della stringa" - Il
[^(abc)]è una classe di caratteri che dice "corrisponde a qualsiasi singolo carattere purché non sia(oaoboco)".