我正在尝试使用一个简单的已提交字段在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%'