在我的SQL中,我使用WHERE
和LIKE
子句来执行搜索。但是,我需要对两列的组合值执行搜索 - first_name
和last_name
:
WHERE customers.first_name + customers.last_name LIKE '%John Smith%'
这不起作用,但我想知道如何沿着这些方向做点什么?
我试图通过两列分开搜索,如下所示:
WHERE customers.first_name LIKE '%John Smith%' OR customers.last_name LIKE '%John Smith%'
但显然这不起作用,因为搜索查询是这两列的组合值。
答案 0 :(得分:25)
使用以下内容:
WHERE CONCAT(customers.first_name, ' ', customers.last_name) LIKE '%John Smith%'
请注意,为了使其按预期工作,应修剪名字和姓氏,即它们不应包含前导或尾随空格。在插入数据库之前,最好在PHP中修剪字符串。但您也可以将修剪结合到您的查询中:
WHERE CONCAT(TRIM(customers.first_name), ' ', TRIM(customers.last_name)) LIKE '%John Smith%'
答案 1 :(得分:2)
我会从这样的事情开始:
WHERE customers.first_name LIKE 'John%' AND customers.last_name LIKE 'Smith%'
这会返回如下结果:John Smith
,Johnny Smithy
,Johnson Smithison
,因为百分号仅位于LIKE
子句的末尾。与'%John%'
不同,它可以返回如下结果:aaaaJohnaaaa
,aaaSmithaaa
。
答案 2 :(得分:1)
试试这个:
SELECT *
FROM customers
WHERE concat(first_name,' ',last_name) like '%John Smith%';