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

MySQL restituisce la corrispondenza esatta delle parole dal contenuto del testo

La risposta giusta è probabilmente la ricerca nel testo completo.

Tuttavia, ci sono due avvertimenti. Se disponi di stringhe brevi, come descrizioni di prodotti o commenti degli utenti, e desideri utilizzare like , puoi fare qualcosa del genere:

where concat(' ', txt, ' ') like concat('% ', $word, ' %')

Tuttavia, questo presuppone che i delimitatori siano spazi. Quindi, non troverebbe "Ciao". Puoi risolvere questo problema facendo:

where concat(' ', replace(txt, ',' ' '), ' ') like concat('% ', $word, ' %')

Ma scoprirai presto che questo è un dolore. Quindi:ricerca full-text.

Secondo, se stai davvero memorizzando parole chiave nella colonna, allora la soluzione è più semplice. Non farlo. Crea una tabella di giunzione con una riga per riga della tabella originale e una per parola chiave. La memorizzazione di elenchi in stringhe è una cattiva idea in SQL.