gpt4 book ai didi

php - Mysql 搜索类似 2 个单词的顺序

转载 作者:行者123 更新时间:2023-11-29 07:09:26 24 4
gpt4 key购买 nike

我想询问我遇到的问题。

我在 1 列中存储了全名,例如:“John Doe”。

但是执行搜索例如:

SELECT * FROM client WHERE name LIKE '%Doe John%';

结果:0 行。

如果我切换到数据库中的精确匹配存储,它会找到一行。

SELECT * FROM client WHERE name LIKE '%John Doe%';

结果:1 行。

我的问题是,如何在不按单词顺序的情况下在数据库中进行搜索。

在OOP框架中,代码是:

$like = 'Doe John';
$this->db->select('*')->from('client')->like('name', $like)->get();

我也测试了这个,但得到了相同的结果:

$this->db->select('*')->from('client');
if($this->containTwoWords($like)) {
$explode = explode(' ', $like);
foreach($explode as $exploded){
$this->db->like('name', $exploded);
}
} else {
$this->db->like('name', $like);
}
$this->db->get();

function containTwoWords($like){
if(strpos($like, ' ') !== false) {
return true;
}
return false;
}

如果有人通过了这个并有更好的解决方案,我很感谢分享!。

最佳答案

您的示例案例的一个选项是分别检查名字和姓氏:

SELECT * FROM client WHERE name LIKE '%Doe%' AND name LIKE '%John%'

如果您已经用尽了 LIKE 运算符的这些技巧,那么您可以考虑使用 MySQL 的全文搜索功能。

关于php - Mysql 搜索类似 2 个单词的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40363877/

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