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 Sport oder Pub oder beidem?
SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
Schnellere Vorgehensweise:
ist das:
Diese Lösung finden Sie hier: http://forums.mysql.com/read.php?10,392332,392950#msg-392950
Weitere Informationen zu REGEXP finden Sie hier: http://www.tutorialspoint.com/mysql/mysql-regexps.htm
quelle
(select group_concat(myColumn separator '|') from..)
Warum probierst du nicht REGEXP? Versuchen Sie es so:
quelle
SELECT * FROM table WHERE interests NOT REGEXP 'sports|pub'
(> ‿◠) ✌jazkat
Antwort, die 5 Jahre vor Ihrer Antwort eingereicht wurde?Sie können auch verwenden
RLIKE
.Beispielsweise:
quelle
Ihre Anfrage sollte sein
SELECT * FROM `table` WHERE find_in_set(interests, "sports,pub")>0
Ich verstehe, dass Sie die Interessen in einem Feld Ihrer Tabelle speichern, was ein Missverständnis ist. Sie sollten definitiv eine "Interessentabelle" haben.
quelle
SELECT * FROM table WHERE find_in_set(interests, 'sports,pub')
, aber diese Technik wird wahrscheinlich in den meisten Situationen Regex übertreffen.Vergessen Sie nicht, Klammern zu verwenden, wenn Sie diese Funktion nach einem
AND
Parameter verwendenSo was:
quelle
Oder wenn Sie nur den Wortanfang abgleichen müssen:
Sie können die regulären Caret-Übereinstimmungen verwenden:
https://www.regular-expressions.info/anchors.html
quelle
Wie von @Alexis Dufrenoy vorgeschlagen, könnte die Abfrage lauten:
Weitere Informationen im Handbuch .
quelle
Weitere Arbeitsbeispiele:
Aufgabe war es, Teilnehmer an einer Veranstaltung mit Filter zu zählen, wenn die E-Mail-Erweiterung mehreren Unternehmensdomänen entspricht.
quelle