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/refman/5.6…operator_regexp
    https://dev.mysql.com/doc/refman/5.0…n-matching.html

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

    EDIT2:
    test:

    3 Mal editiert, zuletzt von cottton (18. Juli 2015 um 22:47)

Jetzt mitmachen!

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