我有一个这样的数据库:
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%'
但是我认为语法不正确。
答案 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”,而第二种方式则要求名字完全匹配。