相关疑难解决方法(0)

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

我想在我的桌子上搜索一列名字和一列姓氏.我目前接受来自字段的搜索字词,并将其与两列进行比较,一次一个

    select * from table where first_name like '%$search_term%' or 
    last_name like '%$search_term%';
Run Code Online (Sandbox Code Playgroud)

这适用于单字搜索术语,但结果集包括名称为"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%';
Run Code Online (Sandbox Code Playgroud)

有什么建议?

编辑: 我正在测试的名字是"拉里史密斯".db将"Larry"存储在"first_name"列中,将"Smith"存储在"last_name"列中.数据干净,没有多余空格,搜索项左右修剪.

编辑2: 今天早上我尝试了Robert Gamble的答案.他和我昨晚的比赛非常相似.我无法解释,但今天早上它有效.我能想到的唯一区别是,昨晚我将concat函数作为搜索查询的第三个"或"段运行(在查看first_name和last_name之后).今天早上,我查看了上面的内容以及地址和商家名称,将其作为最后一段.

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

php mysql

43
推荐指数
3
解决办法
10万
查看次数

标签 统计

mysql ×1

php ×1