0

Как сделать OR для двух операторов LIKE?

9

Я столкнулся с проблемой при выполнении SQL-запросов. Я попробовал использовать следующие два выражения:

  1. SELECT col FROM db.tbl WHERE col (LIKE 'str1' OR LIKE 'str2') AND col2 = num — на этом этапе возникает ошибка синтаксиса.
  2. SELECT col FROM db.tbl WHERE page LIKE ('str1' OR 'str2') AND col2 = num — в результате выполнения этого запроса я получаю сообщение "Truncated incorrect DOUBLE value: str1" и "Truncated incorrect DOUBLE value: str2" для, как мне кажется, каждого результата. Однако ни один результат не возвращается.

Я думал, что один из этих запросов сработает, но, похоже, оба не работают. Кто-нибудь может помочь понять, в чем ошибка?

5 ответ(ов)

1

Ваш SQL-запрос выбирает значения из столбца col таблицы tbl базы данных db, где значение в столбце col соответствует либо строке str1, либо строке str2, а также значение в столбце col2 равно num.

Вот общая структура вашего запроса:

SELECT col 
FROM db.tbl 
WHERE (col LIKE 'str1' OR col LIKE 'str2') 
  AND col2 = num

Если у вас есть дополнительные вопросы по этому запросу или вы хотите уточнить его, не стесняйтесь спрашивать!

0

В вашем SQL-запросе вы используете оператор LIKE с подстановочными знаками % в начале и в конце строк, что позволяет искать подстроки в значениях столбца col. Это правильно, если вы хотите найти строки, которые содержат str1 или str2 в любом месте.

Ваш запрос выглядит следующим образом:

SELECT col FROM db.tbl WHERE (col LIKE '%str1%' OR col LIKE '%str2%') AND col2 = num

Таким образом, условие LIKE '%str1%' будет искать все записи, где col содержит str1 как подстроку, а условие LIKE '%str2%' — записи, содержащие str2. Оба условия соединены оператором OR, что означает, что если выполняется хотя бы одно из них, то запись будет возвращена, при условии, что также выполняется условие col2 = num.

Использование % в начале и в конце строки позволяет выполнить поиск подстроки независимо от того, где она расположена в значении col.

0

Я думаю, вам нужно использовать условие WHERE ((page LIKE 'str1') OR (page LIKE 'str2')). Это позволит вам выбрать записи, где столбец page содержит либо str1, либо str2.

0

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

page LIKE ('str1' OR 'str2')

в первую очередь попробует объединить 'str1' и 'str2' с помощью оператора OR, результатом чего будет значение TRUE. Затем будет произведена попытка оценить page LIKE TRUE, в результате чего возникнет ошибка.

0

Я полагаю, что вы хотите выполнить следующий запрос:

SELECT col FROM db.tbl WHERE col LIKE '%str[12]%' AND col2 = num

Этот запрос найдёт все случаи, где (col соответствует шаблону %str1% или %str2%) И col2 равно num.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь