Ответ 1
Просто включите LIKE вокруг
SELECT * FROM customers
WHERE 'Robert Bob Smith III, PhD.' LIKE CONCAT('%',name,'%')
Обычно, при запросе базы данных с помощью SELECT, ее общий поиск, чтобы найти записи, соответствующие данной строке поиска.
Например:
SELECT * FROM customers WHERE name LIKE '%Bob Smith%';
Этот запрос должен дать мне все записи, где "Боб Смит" появляется где угодно в поле имени.
Что я хотел бы сделать, это наоборот.
Вместо того, чтобы найти все записи, которые имеют "Bob Smith" в поле имени, я хочу найти все записи, в которых поле имени находится в "Robert Bob Smith III, PhD.", строковый аргумент для запроса.
Просто включите LIKE вокруг
SELECT * FROM customers
WHERE 'Robert Bob Smith III, PhD.' LIKE CONCAT('%',name,'%')
Вы можете использовать регулярные выражения, например:
SELECT * FROM pet WHERE name REGEXP 'Bob|Smith';
Вы также можете использовать
SELECT * FROM customers WHERE name LIKE "%Bob Smith%";
обратите внимание на Double Quotes
В приведенном выше запросе Если мы выполняем поиск с помощью некоторого специального символа, например: '__' или '()', чем его получение всех данных,
SQL > выберите * из test_brck, где NVL (UPPER (v_name), 1) LIKE nvl (UPPER ('%' || & v_name || '%'), NVL (UPPER (v_name), 1));
Введите значение для v_name: '_'
old 2: где NVL (UPPER (v_name), 1) LIKE nvl (UPPER ('%' || & v_name || '%'), NVL (UPPER (v_name), 1))
new 2: где NVL (UPPER (v_name), 1) LIKE nvl (UPPER ('%' || '_' || '%'), NVL (UPPER (v_name), 1))
Раму (пошел gbl)
Ramj
Раму_Каран (пошел blr)
Sidd_Karan
ABC% ^
xy123
ABC
Выбрано 7 строк.
выход:
Раму_Каран (пошел blr)
Sidd_Karan
Неправильно:
SELECT * FROM customers WHERE name LIKE '%Bob Smith%';
Вместо
select count(*)
from rearp.customers c
where c.name LIKE '%Bob smith.8%';
select count
будет просто запрашивать (итоговые значения)
C
свяжет db.table с строкой имен, которая вам нужна, чтобы индексировать
LIKE
должен быть obvs
8
будет вызывать все ссылки в БД 8 или меньше (на самом деле не нужно, но мне нравится аккуратность)