我正在使用Node.js中的MySQL查询来搜索工作人员表,其中的列分为名字和姓氏
表结构:http://sqlfiddle.com/#!9/d9673e
这是我尝试过的两个查询
var FullName = req.query.FullName
const TEST2 = "SELECT StaffList.FirstName, StaffList.LastName, CONCAT(StaffList.FirstName, ' ' ,StaffList.LastName) AS FullName FROM StaffList WHERE CONCAT(StaffList.FirstName, ' ' ,StaffList.LastName) LIKE ? "
const TEST5 = "SELECT StaffList.FirstName, StaffList.LastName, CONCAT_WS(' ',StaffList.FirstName,StaffList.LastName) AS FullName FROM StaffList WHERE CONCAT_WS(' ',StaffList.FirstName,StaffList.LastName) LIKE ? "
connection.query(TEST5,FullName,(error,results) => {
if (error){
return res.send(error)
}
else{
return res.json({
data: results
})
}
})
但是如果我输入正确的名字和姓氏,它只会从数据库中返回一个名字
所以我尝试将其分离
const TEST6 = "SELECT StaffList.FirstName, StaffList.LastName FROM StaffList WHERE FirstName LIKE ? or LastName LIKE ? "
connection.query(TEST6,[FirstName,LastName],(error,results) => {
if (error){
return res.send(error)
}
else{
return res.json({
data: results
})
}
})
如果只有一个字段正确,它将返回正确的值
如何获取它以使其返回类似值?
例如) 汤姆·史密斯 史密斯·罗伯逊 搜索“ Smith”以返回这两个人,无论搜索值是指名字还是姓氏
答案 0 :(得分:2)
如果您不仅想要确切的名称,还想要部分的
您可以使用wildchar
"SELECT StaffList.FirstName, StaffList.LastName
FROM StaffList
WHERE FirstName LIKE concat('%', ? ,'%')
OR LastName LIKE concat('%', ? '%') ";