MySQL:从全名字段中提取名字或姓氏

时间:2020-12-30 20:38:19

标签: mysql sql where-clause sql-like

在 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 个答案:

答案 0 :(得分:0)

like 不是按照您的意愿行事吗?

SELECT id, user_image, name, email, is_online 
FROM users 
WHERE name LIKE CONCAT('%', ?, '%')

这将搜索 name 中任意位置的参数字符串。如果只想在字符串的开头搜索,则将谓词更改为:

WHERE name LIKE CONCAT(?, '%')