#mysql #sql #where-clause #sql-like
#mysql #sql #where-предложение #sql-подобный
Вопрос:
В MySQL у меня есть таблица пользователей с полем под названием name . Это поле имени может содержать полное имя или просто имя или фамилию. Смотрите пример ниже. Мне трудно написать запрос, в котором, если я введу имя, оно должно вернуть мне список всех с этим именем или полным именем.
//MySQL query for finding user by name
findUserByName: (name) =>{
return new Promise((resolve, reject) =>{
pool.query(
`SELECT id, user_image, name, email, is_online FROM users WHERE name = ?`,
[name],
(error, results, fields) =>{
if(error){
return reject(error);
}
else{
return resolve(results);
}
}
);
})
},
//If I type mike it should return me all three of the below names. If I type mike jones it should only return me mike jones.
------------
| name |
------------
| Mike Jones |
------------
| Mike Brady |
------------
| Mike |
------------
Ответ №1:
Не like
делает то, что вы хотите?
SELECT id, user_image, name, email, is_online
FROM users
WHERE name LIKE CONCAT('%', ?, '%')
Выполняется поиск строки параметра в любом name
месте . Если вы хотите выполнить поиск только в начале строки, вам следует изменить предикат на:
WHERE name LIKE CONCAT(?, '%')