sql >> Databáze >  >> RDS >> Oracle

Oracle REGEXP_LIKE a hranice slov

Věřím, že to chcete zkusit

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

protože \b se v tomto seznamu neobjevuje:Rozšíření ovlivněná Perlem v regulárních výrazech Oracle

\s zajišťuje, že test začíná a končí mezerou. To však nestačí, protože řetězec test se také může objevit na samém začátku nebo konci porovnávaného řetězce. Proto používám alternativu (označeno pomocí | ) ^ pro začátek řetězce a $ pro konec řetězce.

Aktualizace (po více než 3 letech)... Jak se stalo, tuto funkci jsem dnes potřeboval a zdá se mi, že ještě lepší regulární výraz je (^|\s|\W)test($|\s|\W) (Chybí speciální znak \b regulárního výrazu v Oracle).



  1. Vložit do z CTE

  2. Kolik databázových indexů je příliš mnoho?

  3. Tipy pro zámky čtení/zápisu v závislosti na úrovni izolace transakcí v MSSQL

  4. SQLite AUTOINCREMENT