SQL Multi suche

  • Hi, wie kann ich in einer Tabelle

    Code
    1. id | keywords | text | descr


    Nach mehreren begriffen in bestimten Spalten suchen?


    Besucher gibt in die suche ein 'Motorrad Fachbetrieb' .. jetzt möchte ich nach beiden begriffen mit wildcard die Tabelle durchsuchen
    a la

    SQL
    1. SELECT * FROM `table` WHERE (`keywords`, `text`) LIKE ("%Motorrad%", "%Fachbetrieb%");


    Also die spalten keywords und text nach den beiden Begriffen durchsuchen, möglichst ohne viel OR .. (menge der Begriffe ist nicht begrenzt und das soll halbwegs schnell laufen x.x

  • REGEXP

    SQL
    1. SELECT
    2. *
    3. FROM db.table
    4. WHERE
    5. `keywords` REGEXP '.*Motorrad.*|.*Fachbetrieb.*'
    6. OR `text` REGEXP '.*Motorrad.*|.*Fachbetrieb.*'
    7. ;


    da geht bestimmt noch einiges am Pattern.

    siehe:
    http://dev.mysql.com/doc/refma…gexp.html#operator_regexp
    https://dev.mysql.com/doc/refm…/en/pattern-matching.html


    EDIT:
    LIKE würde auch ~irgendwie funzen. Aber dann eben nur mit mehreren ORs.


    EDIT2:
    test: