php里的concat(),php – 在WHERE子句中使用mysql concat()?

博主正在尝试优化SQL查询,以在名字和姓氏列中查找特定的名称组合。当前的查询返回了包含名字“Larry”的所有结果,但当用户输入名和姓时,希望得到更精确的匹配。他们尝试使用CONCAT_WS函数结合两个列进行搜索,但未成功。经过调整后,该方法最终在第二天起作用,但不确定查询位置是否影响结果。问题集中在如何正确地根据名和姓进行联合搜索。
摘要由CSDN通过智能技术生成

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

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在“first_name”列中存储“Larry”,在“last_name”列中存储“Smith”。数据是干净的,没有额外的空间,搜索词被左右修剪。

编辑2:我今天早上试过罗伯特·布博的答案。他和我昨晚的运行非常相似。我不能解释,但今天上午它工作。我可以想到的唯一的区别是,昨晚我运行concat函数作为我的搜索查询的第三个“或”段(在通过first_name和last_name)。今天早上,我把它作为最后一个部分,看看上面的地址和商家名称。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值