gpt4 book ai didi

php - 在 WHERE 子句中使用 mysql concat()?

转载 作者:IT老高 更新时间:2023-10-28 12:57:59 28 4
gpt4 key购买 nike

我想搜索包含一列名字和一列姓氏的表格。我目前接受来自某个字段的搜索词并将其与两列进行比较,一次一个与

    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%';

有什么建议吗?

编辑:我正在测试的名字是“Larry Smith”。数据库将“Larry”存储在“first_name”列中,将“Smith”存储在“last_name”列中。数据干净,没有多余的空格,搜索词被左右修剪。

编辑 2: 我今天早上尝试了 Robert Gamble 的答案。他的和我昨晚跑的很相似。我无法解释它,但今天早上它起作用了。我能想到的唯一区别是昨晚我将 concat 函数作为搜索查询的第三个“或”段运行(在查看了 first_name 和 last_name 之后)。今天早上,在查看了上述内容以及地址和公司名称后,我将其作为最后一部分运行。

在查询结束时运行 mysql 函数是否比在中间运行更好?

最佳答案

你所拥有的应该可以工作,但可以简化为:

select * from table where concat_ws(' ',first_name,last_name) 
like '%$search_term%';

您能否提供一个示例名称和搜索词,这不起作用?

关于php - 在 WHERE 子句中使用 mysql concat()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/303679/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com