在 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 |
+------------+
答案 0 :(得分:0)
like
不是按照您的意愿行事吗?
SELECT id, user_image, name, email, is_online
FROM users
WHERE name LIKE CONCAT('%', ?, '%')
这将搜索 name
中任意位置的参数字符串。如果只想在字符串的开头搜索,则将谓词更改为:
WHERE name LIKE CONCAT(?, '%')