如何使用通配符和空格从多个MySQL列中进行选择?

时间:2015-01-11 23:02:58

标签: mysql

我有一个预先选择框用于查找数据库中的用户。经常有一些具有相同名字的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的所有用户
  • 忽略任意数量的空格
  • AND姓氏为doe

当用户键入" john doe"在搜索控件中

(请记住搜索控件是一个文本类型字段)

1 个答案:

答案 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', ' ', '%'), '%')

或者,使用全文搜索。