Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
235 views
in Technique[技术] by (71.8m points)

sql - MySQL: Extracting First Name or Last Name From Full Name Field

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       |
+------------+

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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(?, '%')

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...