In MySQL, I have a users table with a field called name. This name field can contain a full name or just first or last name. See example below. I am having a hard time writing a query where if I type in the first name it should return me a list of everyone with that first name or full 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 |
+------------+
Doesn't like
do what you want?
SELECT id, user_image, name, email, is_online
FROM users
WHERE name LIKE CONCAT('%', ?, '%')
This searches for the parameter string anywhere in name
. If you wanted to search at the beginning of the string only, you would change the predicate to:
WHERE name LIKE CONCAT(?, '%')