SQL как строка поиска начинается с
Изучение SQL. Попросите простые настольные игры с названием поля. Я хочу искать по названию. Если у меня есть игра под названием Age of Empires III: Dynasties
, и я использую LIKE
с параметром Age of Empires III: Dynasties
, все работает отлично, поиск возвращает запись с этим именем. Но если я ищу с помощью Age of Empires III
, он не возвращает никаких записей:
SELECT * from games WHERE (lower(title) LIKE 'age of empires III');
Это ничего не возвращает. Должен ли я использовать что-то другое вместо LIKE
?
Я использую MySQL.
Ответы
Ответ 1
SELECT * from games WHERE (lower(title) LIKE 'age of empires III');
Вышеуказанный запрос не возвращает никаких строк, потому что вы ищете точную строку "age of empires III", которая не существует ни в каких строках.
Итак, чтобы соответствовать этой строке с другой строкой, которая имеет 'age of empires'
в качестве подстроки, вам нужно использовать '%your string goes here%'
Подробнее о сравнение строк mysql
Вам нужно попробовать это
SELECT * from games WHERE (lower(title) LIKE '%age of empires III%');
В Like '%age of empires III%'
это приведет к поиску любой подходящей подстроки в ваших строках и будет отображаться в результатах.
Ответ 2
Вам нужно использовать подстановочный знак %:
SELECT * from games WHERE (lower(title) LIKE 'age of empires III%');
Ответ 3
COLLATE UTF8_GENERAL_CI
будет работать как игнорировать.
ПРИМЕНЕНИЕ:
SELECT * from games WHERE title COLLATE UTF8_GENERAL_CI LIKE 'age of empires III%';
или
SELECT * from games WHERE LOWER(title) LIKE 'age of empires III%';