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%';