mysql - 在不使用正则表达式或 rlike 的情况下搜索确切的词组

标签 mysql regex

我的 table 是这样的:

|name           |
-----------------
|Joseph Jackson |
|Aiden Chase    |
|Luke Benjamin  |
|Joseph         |
|Joseph2        |

如果我搜索单词 Joseph (SELECT * from myTable where name="Joseph" ) 我只会得到最后的结果:

|name           |
-----------------
|Joseph         |

如果我搜索 Jackson 这个词,我不会得到任何结果。

那是我不想要的。


我想要的是获取确切搜索词中存在的记录,例如:

如果搜索的词是约瑟夫,我会得到:

|name           |
-----------------
|Joseph         |
|Joseph Jackson |

*注意 Joseph2 不在结果集中。

如果搜索的词是 Jackson,我会得到:

|name           |
-----------------
|Joseph Jackson |

*但是我不能使用like '%Jose%'(like 的使用)因为我会得到 Joseph2 并且我想要确切的词(Jose)。

*如果搜索的词是 Jose,例如我不应该得到任何结果,因为 Jose 不在数据中(我也不应该得到包含 Joseph 词的记录)。


我发现的唯一方法是使用正则表达式,例如:

SELECT * from myTable where REGEXP [[:<:]]Joseph[[:>:]]     

|name           |
-----------------
|Joseph         |
|Joseph Jackson |


SELECT * from myTable where REGEXP [[:<:]]Jackson[[:>:]]

|name           |
-----------------
|Joseph Jackson |

我想要这个结果,但不使用正则表达式且不使用 rlike,有什么办法吗?如何?谢谢。

最佳答案

这为全文搜索尖叫

ALTER TABLE T ADD FULLTEXT INDEX (name);

SELECT * FROM T WHERE MATCH (name) AGAINST ('+Joseph' IN BOOLEAN MODE);

FIDDLE

关于mysql - 在不使用正则表达式或 rlike 的情况下搜索确切的词组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34598383/

相关文章:

php - 通过使用php将mysql数据库记录分成N个数组来分组

Python 模块 PyMySQL 不接受参数

Javascript 字符串验证。如何在字符串中只写一次字符并且只在开头?

python - 使用 Python 中的正则表达式清理数字中的逗号

regex - perl 在 bash 中查找两个模式之间的模式

javascript - jQuery 正则表达式不验证

php - MySQL 使用数组中的字段值更新数组中的字段名

mysql - inotify 在 InnoDB 文件上失败

mysql - Entity Framework (MySQL) - 使用两个 dbcontext 将数据从一个数据库移动到另一个数据库

javascript - 如何将这两个正则表达式合并为一个?