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