MySQL搜索,按名字和姓氏的组合

时间:2019-03-02 21:02:38

标签: mysql

我有一个这样的数据库:

first_name    last_name
Susan         Jones
Captain       Kirk
Luke          Skywalker

我正在尝试编写如下查询:

var search = 'Luke Sky';

SELECT * FROM users WHERE first_name + last_name LIKE '%Luke Sky%'

但是我认为语法不正确。

2 个答案:

答案 0 :(得分:1)

在MySQL中,您将字符串与CONCAT()(而不是+)组合在一起,因此:

SELECT * FROM users WHERE CONCAT(first_name, ' ', last_name') LIKE '%Luke Sky%'

您最终想要的是:

WHERE ... LIKE ?

然后提供在应用程序层中构造的占位符值,该值在开头和结尾处添加了必要的%值。

一如既往,请记住,“名”和“姓”充其量是朦胧的概念。有些文化首先使用姓氏,而其他一些甚至根本没有姓氏。

答案 1 :(得分:0)

您可以通过以下两种方法进行操作。首先,您可以在“”上拆分搜索字符串,以便为您提供单独的名字和姓氏,然后可以进行where first_name like '%Luke%' and last_name like '%sky% 或者,您可以使用concat函数,例如concat(first_name, " ", last name) like '%Luke sky% 我个人会选择第一个,因为这样可以让您部分匹配每个名称。即“ lu sky”,而第二种方式则要求名字完全匹配。