我试图使用一个简单的使用提交字段在MySQL中获取记录.更确切地说,用户输入名称(名字或姓氏或全名),服务器应返回匹配的行.
到目前为止我所做的是:
SELECT * FROM people
WHERE
firstname LIKE '%user_submitted_data%' OR
lastname LIKE '%user_submitted_data%'
这在目前很有效,但是当用户提交全名时,(显然)不起作用.有没有办法在整个’WHERE类型条件’和’HAVING类型条件’之间添加OR?这样我可以做类似的事情:
SELECT [some fields], CONCAT(firstname, ' ', 'lastname') as fullname
FROM people
WHERE
firstname LIKE '%user_submitted_data%' OR
lastname LIKE '%user_submitted_data%' OR
HAVING fullname LIKE '%user_submitted_data%'
我知道我可以拆分原始字符串,但这有一些负面影响,因为你必须处理包含空格的名称,例如’De Gaule’和类似的东西.
解决方法:
做一个子查询:
SELECT [some fields]
FROM
SELECT firstname, lastname, CONCAT(firstname, ' ', lastname) as fullname
FROM people) AS tmp
WHERE firstname LIKE '%user_submitted_data%'
OR lastname LIKE '%user_submitted_data%'
OR fullname LIKE '%user_submitted_data%'
标签:sql,mysql,search
来源: https://codeday.me/bug/20191008/1870720.html