Использование нескольких операторов OR LIKE - PullRequest
0 голосов
/ 27 мая 2019

У меня есть база данных, и я хочу отфильтровать некоторые записи.Вот как выглядит фильтр:

SELECT * FROM Item WHERE 1=1  AND Favorite = 1 AND (  DocType = ?  OR  DocType = ?  OR  DocType = ?  OR  DocType = ? )  AND (Title Like ? OR Location LIKE ? OR DocType LIKE ? OR ProType LIKE ?)

Фильтр почти работает.Я хочу сосредоточиться на последней части:

AND (Title Like ? OR Location LIKE ? OR DocType LIKE ? OR ProType LIKE ?)

Потому что кажется, что

 OR DocType LIKE ? OR ProType LIKE ?

игнорируется.При переключении Location с помощью DocType, например:

AND (Title Like ? OR DocType LIKE ? OR Location LIKE ? OR ProType LIKE ?)

Я могу найти все, что связано с DocType.Местоположение больше не может быть найдено (так же, как ProType).Итак, я думаю, что я записал это неправильно.

Как мне нужно было бы записать это, чтобы я мог фильтровать по названию, расположению, DocType и ProType?

1 Ответ

0 голосов
/ 27 мая 2019

У вас есть две проверки для столбца DocType, одна с = и одна с LIKE, и, поскольку вы добавили% в строку поиска, =, скорее всего, вернет false, поэтому ничего не будет возвращено, так как две проверки сгруппированы сИ поэтому ваше условие WHERE станет (сокращено)

WHERE DocType = '%ABC%' AND DocType LIKE '%ABC'

Я думаю, вам следует просто удалить часть непосредственно перед AND в вашем запросе

WHERE 1=1 AND Favorite = 1 AND (Title Like ? OR Location LIKE ? OR DocType LIKE ? OR ProType LIKE ?)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...