在 WHERE 子句中使用 mysql concat() ?
我想搜索我的表,其中包含一列名字和一列姓氏。我目前接受来自某个字段的搜索词,并将其与两列进行比较,一次一列
select * from table where first_name like '%$search_term%' or
last_name like '%$search_term%';
这适用于单个单词搜索词,但结果集包括名称为“Larry”的每个人。但是,如果有人输入名字,然后是空格,然后是姓氏,我想要一个更窄的搜索结果。我尝试了以下方法,但没有成功。
select * from table where first_name like '%$search_term%' or last_name
like '%$search_term%' or concat_ws(' ',first_name,last_name)
like '%$search_term%';
有什么建议吗?
编辑:我正在测试的名字是“拉里史密斯”。db 将“Larry”存储在“first_name”列中,将“Smith”存储在“last_name”列中。数据干净,没有多余的空格,搜索词被左右修剪。
编辑2:今天早上,我尝试了罗伯特·甘布尔(Robert Gamble)的答案。他和我昨晚跑步的非常相似。我无法解释它,但今天早上它有效。我能想到的唯一区别是,昨晚我运行了concat函数作为搜索查询的第三个“或”段(在查看first_name并last_name之后)。今天早上,在查看了上述内容以及地址和公司名称之后,我将其作为最后一个部分运行。
在查询结束时运行 mysql 函数是否比在中间运行函数效果更好?