我有一个预先选择框用于查找数据库中的用户。经常有一些具有相同名字的meny用户&不同的姓氏。 搜索用户的人通常会键入:" John doe"。
问题在于,typeahead将开始获取所有John用户,但在输入空格时不返回任何结果。 " WHY"这种情况很明显,用户名字被修剪了&任何有空格的东西都不会匹配〜更不用说跟随其后的另一个角色了,首先&姓氏存储在单独的列中。
以下是查询:
SELECT Entities.* FROM `Entities`
WHERE `Entities`.`first_name` LIKE '%john doe%'
OR `Entities`.`last_name` LIKE '%john doe %'
如何重新编写此查询,以便结果为:
当用户键入" john doe"在搜索控件中
(请记住搜索控件是一个文本类型字段)
答案 0 :(得分:1)
如果您想使用john
这样的名字和doe
这样的姓氏,请尝试以下内容:
where concat(Entities`.`first_name`, ' ', `Entities`.`last_name`) like '%john% doe%'
如果您想根据搜索字符串执行此操作,请执行以下操作:
where concat(`Entities`.`first_name`, ' ', `Entities`.`last_name`) like
concat('%', replace('john doe', ' ', '%'), '%')
或者,使用全文搜索。