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

Oracle REGEXP_LIKE und Wortgrenzen

Ich glaube, Sie möchten es versuchen

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

weil der \b erscheint nicht auf dieser Liste:Perl-influenced Extensions in Oracle Regular Expressions

Der \s stellt sicher, dass der Test in einem Leerzeichen beginnt und endet. Dies reicht jedoch nicht aus, da der String test könnte auch ganz am Anfang oder Ende der übereinstimmenden Zeichenfolge erscheinen. Daher verwende ich die Alternative (angezeigt durch | ) ^ für Stringanfang und $ für Ende der Zeichenkette.

Aktualisierung (nach 3 Jahren+)... Zufällig brauchte ich diese Funktionalität heute, und es scheint mir, dass ein noch besserer regulärer Ausdruck (^|\s|\W)test($|\s|\W) ist (Das fehlende \b-Sonderzeichen für reguläre Ausdrücke in Oracle).