Mam to zapytanie MySQL.
Mam pola bazy danych z taką zawartością
sports,shopping,pool,pc,games
shopping,pool,pc,games
sports,pub,swimming, pool, pc, games
Dlaczego to podobne zapytanie nie działa? Potrzebuję boisk ze sportem, pubem lub obydwoma?
SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
Szybszy sposób na zrobienie tego:
czy to jest:
Znalazłem to rozwiązanie tutaj: http://forums.mysql.com/read.php?10,392332,392950#msg-392950
Więcej o REGEXP tutaj: http://www.tutorialspoint.com/mysql/mysql-regexps.htm
źródło
(select group_concat(myColumn separator '|') from..)
Dlaczego nie spróbować REGEXP. Spróbuj tak:
źródło
SELECT * FROM table WHERE interests NOT REGEXP 'sports|pub'
(> ‿◠) ✌jazkat
odpowiedzi przesłanej 5 lat wcześniej?Możesz również użyć
RLIKE
.Na przykład:
źródło
Twoje zapytanie powinno brzmieć
SELECT * FROM `table` WHERE find_in_set(interests, "sports,pub")>0
Rozumiem, że przechowujesz interesy w jednym polu swojego stołu, co jest błędnym przekonaniem. Ostatecznie powinieneś mieć tabelę „odsetek”.
źródło
SELECT * FROM table WHERE find_in_set(interests, 'sports,pub')
, ale w większości sytuacji ta technika prawdopodobnie przewyższy regex.Nie zapomnij użyć nawiasów, jeśli używasz tej funkcji po
AND
parametrzeLubię to:
źródło
Lub jeśli chcesz dopasować tylko początek słów:
możesz użyć dopasowania wyrażenia regularnego daszka:
https://www.regular-expressions.info/anchors.html
źródło
Jak zaproponował @Alexis Dufrenoy, zapytanie może wyglądać następująco:
Więcej informacji w instrukcji .
źródło
Więcej przykładów pracy:
Zadanie polegało na zliczaniu uczestników wydarzenia (wydarzeń) z filtrem, jeśli rozszerzenie adresu e-mail było równe wielu domenom firmy.
źródło