结合名字和姓氏进行MySQL搜索

结合名字和姓氏进行MySQL搜索,mysql,Mysql,我有这样一个数据库: first_name last_name Susan Jones Captain Kirk Luke Skywalker 我正在尝试编写一个如下的查询: first_name last_name Susan Jones Captain Kirk Luke Skywalker var搜索='Luke Sky' 从名+姓(如“%Luke Sky%”)的用户中选择* 但我认

我有这样一个数据库:

first_name    last_name
Susan         Jones
Captain       Kirk
Luke          Skywalker
我正在尝试编写一个如下的查询:

first_name    last_name
Susan         Jones
Captain       Kirk
Luke          Skywalker
var搜索='Luke Sky'

从名+姓(如“%Luke Sky%”)的用户中选择*


但我认为这种语法是不正确的。

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

SELECT * FROM users WHERE CONCAT(first_name, ' ', last_name') LIKE '%Luke Sky%'
你最终想要的是:

WHERE ... LIKE ?
然后提供在应用程序层中构造的占位符值,该值在开始和结束处添加了必要的
%


和往常一样,记住“名字”和“姓氏”充其量只是模糊的概念。有些文化先有姓氏,有些则根本没有姓氏。

你可以通过几种方式做到这一点。首先,您可以拆分“”上的搜索字符串以提供单独的名字和姓氏,然后您可以执行
,其中姓氏如“%Luke%”和姓氏如“%sky%”
或者你可以使用
concat
函数,比如
concat(名字,”,姓),比如“%Luke sky%”
就个人而言,我会选择第一个,因为这样可以让你部分匹配每个名字。即“lu sky”,而第二种方式要求名字完全匹配