MYSQL: хочу сравнивать слова с текстом в текстовом поле только в том случае, если в поле есть текст с использованием МАТЧЕЙ ПРОТИВ В РЕЖИМЕ ЕСТЕСТВЕННОГО ЯЗЫКА - PullRequest
0 голосов
/ 15 июня 2019

Я сравниваю некоторый текст с текстовым полем, используя

WHERE MATCH(dbase-field) AGAINST('$querystring' IN NATURAL LANGUAGE MODE).

Я хотел бы также сравнить строку запроса с другим текстовым полем, но выгода заключается в том, что я хочу исключить результаты, в которых нет совпадения, если поле содержит текст, но я не хочу исключать результаты, если текстовое поле пусто.

Другими словами, я не могу просто сказать:

WHERE MATCH(dbase-field) AGAINST('$querystring' IN NATURAL LANGUAGE MODE) AND 
 MATCH(dbase-field2) AGAINST('$querystring' IN NATURAL LANGUAGE MODE) 

поскольку я считаю, что это всегда будет отфильтровывать результаты, когда нет совпадения с dbase-field2, но я хочу, чтобы d-basefield2 фильтровал только когда в нем что-то есть.

Что я хотел бы сделать, это (псевдокод):

WHERE MATCH(dbase-field) AGAINST('$querystring' IN NATURAL LANGUAGE MODE) AND 
if (there is any text in dbase-field2) {
 MATCH(dbase-field2) AGAINST('$querystring' IN NATURAL LANGUAGE MODE) 
}

Есть ли способ сделать это в MYSQL, возможно, с помощью CASE END?

1 Ответ

1 голос
/ 15 июня 2019

Вы должны быть в состоянии сделать:

WHERE MATCH(dbase-field) AGAINST('$querystring' IN NATURAL LANGUAGE MODE) AND 
      (dbase-field2 IS NULL OR
       MATCH(dbase-field2) AGAINST('$querystring' IN NATURAL LANGUAGE MODE) 
      )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...