Mysql
 sql >> Database >  >> RDS >> Mysql

Confini delle parole MySQL REGEXP [[:<:]] [[:>:]] e virgolette

Vorrei citare la documentazione primo:

Dalla documentazione possiamo vedere il motivo alla base del tuo problema e non è causato da una fuga di sorta. Il problema è che stai cercando di far corrispondere la parola limite [[:<:]] proprio all'inizio della stringa che non funzionerà perché un limite di parola come puoi vedere dalla documentazione separa un carattere di parola da un carattere non di parola, ma nel tuo caso il primo carattere è un " che non è un carattere di parola quindi non c'è limite di parola, lo stesso vale per l'ultimo " e [[:>:]] .

Affinché funzioni, devi cambiare un po' la tua espressione in questa:

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

Nota come il confine di parola separa un carattere non di parola " da una parola carattere w all'inizio e un " da d alla fine della stringa.

MODIFICA: Se desideri utilizzare sempre un limite di parole all'inizio e alla fine della stringa senza sapere se ci sarà un limite effettivo, puoi utilizzare la seguente espressione:

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

Questo corrisponderà a un limite di parola all'inizio o all'inizio della stringa ^ e lo stesso per la fine della parola limite o fine stringa. Ti consiglio davvero di studiare i dati che stai cercando di abbinare e cercare schemi comuni e non usare espressioni regolari se non sono lo strumento giusto per il lavoro.

Demo di SQL Fiddle