sql >> Databáze >  >> RDS >> Mysql

Hranice slov MySQL REGEXP [[:<:]] [[:>:]] a dvojité uvozovky

Dovolte mi citovat dokumentaci první:

Z dokumentace vidíme důvod vašeho problému a není způsoben jakýmkoli únikem. Problém je v tom, že se pokoušíte porovnat hranici slova [[:<:]] hned na začátku řetězce, což nebude fungovat, protože hranice slova, jak můžete vidět z dokumentace, odděluje znak slova od znaku, který není slovem, ale ve vašem případě je prvním znakem " což není znak slova, takže neexistuje žádná hranice slova, totéž platí pro poslední " a [[:>:]] .

Aby to fungovalo, musíte svůj výraz trochu změnit na tento:

"[[:<:]]word[[:>:]]"
 ^^^^^^^    ^^^^^^^

Všimněte si, jak hranice slova odděluje neslovný znak " ze slovního znaku w na začátku a " od d na konci řetězce.

UPRAVIT: Pokud chcete vždy použít hranici slova na začátku a konci řetězce, aniž byste věděli, zda tam bude skutečná hranice, můžete použít následující výraz:

([[:<:]]|^)"word"([[:>:]]|$)

To bude odpovídat buď hranici slova na začátku, nebo začátku řetězce ^ a totéž pro konec hranice slova nebo konec řetězce. Opravdu vám doporučuji, abyste si prostudovali data, která se snažíte porovnat, a hledali společné vzorce a nepoužívejte regulární výrazy, pokud nejsou pro danou práci tím správným nástrojem.

Ukázka SQL Fiddle



  1. Opakovaný přesun dat ze serveru SQL Server do Oracle

  2. Připojení zapalování k aplikaci Microsoft Access

  3. Socket File /var/pgsql_socket/.s.PGSQL.5432 chybí v Mountain Lion (OS X Server)

  4. Odborný průvodce replikací Slony pro PostgreSQL