结合名字和姓氏进行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”,而第二种方式要求名字完全匹配