查询名称(名字和姓氏)

时间:2018-12-19 10:40:21

标签: mysql node.js

我正在使用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”以返回这两个人,无论搜索值是指名字还是姓氏

1 个答案:

答案 0 :(得分:2)

如果您不仅想要确切的名称,还想要部分的
您可以使用wildchar

 "SELECT StaffList.FirstName, StaffList.LastName 
    FROM StaffList 
    WHERE FirstName LIKE concat('%', ? ,'%') 
    OR LastName LIKE concat('%', ? '%') ";