Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle regex - ne commence pas par et ne se termine pas par

Tester la non-correspondance comme celle-ci peut devenir compliqué, je vous recommande donc de tester une correspondance et d'annuler le résultat.

Ne commence pas par abc :

WHERE NOT REGEXP_LIKE(myString, '^abc')

Ne se termine pas par abc :

WHERE NOT REGEXP_LIKE(myString, 'abc$')

Quant à savoir pourquoi cela ne fonctionne pas, comme le dit @DavidKnipe dans sa réponse :c'est parce que vous utilisez des classes de caractères. L'expression régulière ^[^(abc)] analyse comme ceci :

  • Le premier ^ dit "ancrer au début de la chaîne"
  • Le [^(abc)] est une classe de caractères qui dit "correspond à n'importe quel simple caractère tant qu'il n'est pas ( ou a ou b ou c ou ) ".