Как вы ИЛИ два НРАВИТСЯ заявления? - PullRequest
29 голосов
/ 27 октября 2008

Я пробовал следующие два утверждения:

  • SELECT col FROM db.tbl WHERE col (LIKE 'str1' OR LIKE 'str2') AND col2 = num приводит к синтаксической ошибке
  • SELECT col FROM db.tbl WHERE page LIKE ('str1' OR 'str2') AND col2 = num приводит к «Сокращенному неверному значению DOUBLE: str1» и «Усеченному неверному значению DOUBLE: str2» для каждого элемента. Однако никаких результатов на самом деле не возвращается.

Я полагал, что одно из двух утверждений сработает, но это не так.

Ответы [ 6 ]

50 голосов
/ 27 октября 2008
SELECT col FROM db.tbl WHERE (col LIKE 'str1' OR col LIKE 'str2') AND col2 = num
3 голосов
/ 27 октября 2008

Я считаю, что вам нужно WHERE ((page LIKE 'str1') OR (page LIKE 'str2'))

2 голосов
/ 27 октября 2008

Думайте просто:

SELECT col FROM db.tbl WHERE (col LIKE 'str1' OR col LIKE 'str2') AND col2 = ...
1 голос
/ 19 декабря 2016

USE % в начале и конце строки. Чтобы он также проверял подстроки

SELECT col FROM db.tbl WHERE (col LIKE '%str1%' OR col LIKE '%str2%') AND col2 = num
1 голос
/ 27 октября 2008

Оператор «ИЛИ» применяется к выражениям. "LIKE 'str1'" и "LIKE 'str2'" не являются допустимыми выражениями, поскольку для оператора "LIKE" требуется как левая, так и правая части.

page LIKE ('str1' OR 'str2')

сначала попытается выполнить ИЛИ вместе 'str1' и 'str2', давая значение ИСТИНА. Затем он попытается оценить page LIKE TRUE и сообщить об ошибке.

1 голос
/ 27 октября 2008

попробуйте ВЫБРАТЬ col из db.tbl ГДЕ (col LIKE 'str1' или col LIKE 'str2') И col2 = num

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...