MySQL: извлечение имени или фамилии из поля полного имени

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