wake-up-neo.com

MySQL Wie mehrere Werte

Ich habe diese MySQL-Abfrage.

Ich habe Datenbankfelder mit diesem Inhalt

sports,shopping,pool,pc,games 
shopping,pool,pc,games 
sports,pub,swimming, pool, pc, games   

Warum funktioniert diese Abfrage nicht? Ich brauche die Felder mit entweder Sport oder Pub oder beides?

SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
126
webmasters

Das (a,b,c) Liste funktioniert nur mit in. Für like müssen Sie or verwenden:

WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
113
Andomar

Schnellere Vorgehensweise:

WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'

ist das:

WHERE interests REGEXP 'sports|pub'

Diese Lösung wurde hier gefunden: http://forums.mysql.com/read.php?10,392332,392950#msg-39295

Weitere Informationen zu REGEXP finden Sie hier: http://www.tutorialspoint.com/mysql/mysql-regexps.htm

283
jazkat

Warum probierst du nicht REGEXP aus? Versuchen Sie es wie folgt:

SELECT * FROM table WHERE interests REGEXP 'sports|pub'
33
Ahmad Hussain

Sie können auch RLIKE verwenden.

Zum Beispiel:

SELECT * FROM TABLE_NAME WHERE COLNAME RLIKE 'REGEX1|REGEX2|REGEX3'
9
iamharish15

Ihre Anfrage sollte SELECT * FROM `table` WHERE find_in_set(interests, "sports,pub")>0 sein

Ich verstehe, dass Sie die Interessen in einem Feld Ihrer Tabelle speichern, was ein Missverständnis ist. Sie sollten definitiv eine "Interesse" -Tabelle haben.

8
Alexis Dufrenoy

Vergessen Sie nicht, Klammern zu verwenden, wenn Sie diese Funktion nach einem AND -Parameter verwenden

So was:

WHERE id=123 and(interests LIKE '%sports%' OR interests LIKE '%pub%')
5
Luan

Wie von @Alexis Dufrenoy vorgeschlagen, könnte die Abfrage wie folgt lauten:

SELECT * FROM `table` WHERE find_in_set('sports', interests)>0 OR find_in_set('pub', interests)>0

Weitere Informationen im Handbuch .

2
Franc Drobnič

Weitere Arbeitsbeispiele:

SELECT COUNT(email) as count FROM table1 t1 
JOIN (
      SELECT company_domains as emailext FROM table2 WHERE company = 'Dell'
     ) t2 
ON t1.email LIKE CONCAT('%', emailext) WHERE t1.event='PC Global Conference";

Aufgabe war es, Teilnehmer an einer Veranstaltung (en) mit Filter zu zählen, wenn die E-Mail-Erweiterung mehreren Unternehmensdomänen entspricht.

0
Intacto