Как сделать OR для двух операторов LIKE?
Я столкнулся с проблемой при выполнении SQL-запросов. Я попробовал использовать следующие два выражения:
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— в результате выполнения этого запроса я получаю сообщение "Truncated incorrect DOUBLE value: str1" и "Truncated incorrect DOUBLE value: str2" для, как мне кажется, каждого результата. Однако ни один результат не возвращается.
Я думал, что один из этих запросов сработает, но, похоже, оба не работают. Кто-нибудь может помочь понять, в чем ошибка?
5 ответ(ов)
Ваш 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
Если у вас есть дополнительные вопросы по этому запросу или вы хотите уточнить его, не стесняйтесь спрашивать!
В вашем 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.
Я думаю, вам нужно использовать условие WHERE ((page LIKE 'str1') OR (page LIKE 'str2')). Это позволит вам выбрать записи, где столбец page содержит либо str1, либо str2.
Оператор "OR" применяется к выражениям. Выражения "LIKE 'str1'" и "LIKE 'str2'" не являются валидными выражениями, поскольку оператор "LIKE" требует наличия как левой, так и правой части.
page LIKE ('str1' OR 'str2')
в первую очередь попробует объединить 'str1' и 'str2' с помощью оператора OR, результатом чего будет значение TRUE. Затем будет произведена попытка оценить page LIKE TRUE, в результате чего возникнет ошибка.
Я полагаю, что вы хотите выполнить следующий запрос:
SELECT col FROM db.tbl WHERE col LIKE '%str[12]%' AND col2 = num
Этот запрос найдёт все случаи, где (col соответствует шаблону %str1% или %str2%) И col2 равно num.
SQL: выбрать только строки с максимальным значением в столбце
Когда использовать одинарные кавычки, двойные кавычки и обратные кавычки в MySQL
Удаление с использованием JOIN в MySQL
MySQL 1062 - Дубликат значения '0' для ключа 'PRIMARY'
java.sql.SQLException: Не найден подходящий драйвер для jdbc:mysql://localhost:3306/dbname