sql >> Database >  >> RDS >> Oracle

Oracle REGEXP_LIKE en woordgrenzen

Ik geloof dat je het wilt proberen

 select 1 from dual 
  where regexp_like ('does test work here', '(^|\s)test(\s|$)');

omdat de \b komt niet voor in deze lijst:Perl-beïnvloede extensies in Oracle Regular Expressions

De \s zorgt ervoor dat de test begint en eindigt in een witruimte. Dit is echter niet voldoende, aangezien de string test kan ook helemaal aan het begin of het einde van de string worden weergegeven. Daarom gebruik ik het alternatief (aangegeven door de | ) ^ voor begin van string en $ voor einde van string.

Update (na 3 jaar+)... Toevallig had ik deze functionaliteit vandaag nodig, en het lijkt mij dat een nog betere reguliere expressie (^|\s|\W)test($|\s|\W) is (Het ontbrekende speciale teken voor reguliere expressies \b in Oracle).



  1. Online SQL-syntaxiscontrole die voldoet aan meerdere databases

  2. .NET Core 2.1 Identity krijgt alle gebruikers met hun bijbehorende rollen

  3. Herstelmodel voor SQL Server-wijziging

  4. Rijen verwijderen uit bovenliggende en onderliggende tabellen