SQL Multi suche

  • Hi, wie kann ich in einer Tabelle

    Code
    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
    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
    SELECT 
    * 
    FROM db.table
    WHERE 
    	`keywords` REGEXP '.*Motorrad.*|.*Fachbetrieb.*'
    	OR `text` REGEXP '.*Motorrad.*|.*Fachbetrieb.*'
    ;


    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:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!