Несколько операторов WHERE, за которыми следуют несколько столбцов, используя LIKE - PullRequest
0 голосов
/ 17 сентября 2018

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

SELECT *
FROM 'tablename' 
WHERE type = 'type' AND
      is_real= 'true' AND
      id LIKE '%search input%' OR title LIKE '%search input%' OR body LIKE '%search input%'
ORDER BY index_id

что я пытаюсь сделать, это выбрать все из tablename, где type и is_true равно определенному значению .... в то время как он также возвращает все операторы LIKE для моего поиска ... но кажется, что при добавлении операторов LIKE / или *

игнорируются операторы типа и is_true

Также я знаю, что все данные передаются правильно

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Я думаю, что ваша проблема в операционном, а не в НРАВИТСЯ. Вам просто нужны скобки вокруг ваших утверждений LIKE. В противном случае, если любое из OR является истинным, оно проигнорирует первые два условия.

SELECT *
FROM 'tablename' 
WHERE type = 'type' AND
      is_real= 'true' AND
      ( id LIKE '%search input%' OR title LIKE '%search input%' OR body LIKE '%search input%' )
ORDER BY index_id
0 голосов
/ 17 сентября 2018

Вам нужны некоторые круглые скобки, так как из-за приоритета оператора:

SELECT t.* 
FROM tablename t
WHERE (type = 'type' AND is_real= 'true') AND 
      (id LIKE '%search input%' OR title LIKE '%search input%' OR body LIKE '%search input%') 
ORDER BY index_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...