2015-08-20 2 views
0

У меня есть поля, называемые языком, и значения равны hindi,english.Sql Query для получения совпадающих строк для двух критериев

Так что, если я выберу hindi и english, я использовал как предложение так, чтобы эти строки попали в результат.

Но если я использую:

SELECT * FROM `rr` WHERE rr LIKE '%english,hindi%' LIMIT 0 , 30 

Эта строка не придет в результате.

Так может ли кто-нибудь помочь мне решить эту проблему?

Заранее спасибо.

+0

ли вы хранить один язык в поле языка, или все языки разделены запятой? – Pushpendra

+0

все языки в одном поле, разделенные запятой. –

ответ

0

BOOLEAN MODE может помочь вам

SELECT * FROM rr WHERE MATCH (rr) 
    AGAINST ('+english +hindi' IN BOOLEAN MODE) LIMIT 0 , 30; 

Использование:

SELECT * FROM tablename WHERE MATCH (col1, col2) AGAINST ('string to be searched') 

На основании его примера здесь

MySQL может выполнять булевы полнотекстового поиска с использованием IN BOOLEAN MODE модификатор. С помощью этого модификатора определенные символы имеют специальное значение в начале или конце слов в строке поиска. В следующем задании операторы + и - указывают, что слово должно быть , которое должно присутствовать или отсутствовать, соответственно, для соответствия. Таким образом, запрос возвращает все строки, содержащие слово «VAL1» но не содержащие слово «val2»:

mysql> SELECT * FROM TABLE WHERE MATCH (COL1,COL2) 
    -> AGAINST ('+val1 -val2' IN BOOLEAN MODE); 
+0

У меня есть разделенные запятой языки в одном поле. SELECT * FROM rr WHERE MATCH (rr) ПРОТИВ («английский, хинди»), но не используется. получив некоторую ошибку. –

Смежные вопросы