Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL gibt eine exakte Wortübereinstimmung aus dem Textinhalt zurück

Die richtige Antwort ist wahrscheinlich die Volltextsuche.

Es gibt jedoch zwei Vorbehalte. Wenn Sie kurze Zeichenfolgen wie Produktbeschreibungen oder Benutzerkommentare haben und like verwenden möchten , können Sie so etwas tun:

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

Dies setzt jedoch voraus, dass die Trennzeichen Leerzeichen sind. Es würde also "Hallo" nicht finden. Sie können dies folgendermaßen beheben:

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

Aber Sie werden schnell feststellen, dass dies ein Schmerz ist. Daher:Volltextsuche.

Zweitens, ob Sie wirklich Keywords speichern in der Spalte, dann ist die Lösung einfacher. Tu das nicht. Erstellen Sie eine Verbindungstabelle mit einer Zeile pro Originaltabellenzeile und einer pro Schlüsselwort. Das Speichern von Listen in Strings ist in SQL eine schlechte Idee.