select name
from users
where instr('John Smith and Peter Johnson', name) > 0
Я бы предпочел использовать этот метод вместо:
select *
from users
WHERE 'John Smith and Peter Johnson' LIKE CONCAT('%', name ,'%')
, потому что если есть вероятность, что name
может содержать символ %
или _
(например, name = 'v% alue'), тогда вышеупомянутый запрос все равно вернет эту запись неправильно. Также обратите внимание, что если ваш столбец может содержать обратную косую черту и / или " C escape-символы ", то они также должны быть экранированы. Это все объясняется в Функции сравнения строк MySQL . Например, приведенный ниже SQL вернет 1:
SELECT 'val\%ue' LIKE CONCAT('%', 'al\\\\\%u' ,'%');
Единственная обратная косая черта должна быть экранирована с помощью \\\\
, а символ %
экранирован: \%
.