Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle Regex - beginnt nicht mit und endet nicht mit

Das Testen auf solche Nichtübereinstimmungen kann kompliziert werden, daher würde ich empfehlen, auf eine Übereinstimmung zu testen und das Ergebnis zu negieren.

Beginnt nicht mit abc :

WHERE NOT REGEXP_LIKE(myString, '^abc')

Endet nicht mit abc :

WHERE NOT REGEXP_LIKE(myString, 'abc$')

Warum es nicht funktioniert, wie @DavidKnipe in seiner Antwort sagt:Es liegt daran, dass Sie Zeichenklassen verwenden. Die Regex ^[^(abc)] parst wie folgt aus:

  • Der erste ^ sagt "am Anfang der Zeichenfolge verankern"
  • Der [^(abc)] ist eine Zeichenklasse, die besagt:„passt zu jedem single Zeichen, solange es nicht ( ist oder a oder b oder c oder ) ".