PHP MySQL搜索单词,如果%100等于我搜索的单词" bat"我看到"蝙蝠侠"结果

时间:2018-03-13 07:47:55

标签: php mysql sql database phpmyadmin

PHP MySQL搜索单词,如果%100等于我搜索的单词" bat"我看到"蝙蝠侠"在结果中。我只想列出标题是否包含" bat",我不想列出是否包含" batman"

我尝试了很多方法。我无法解决这个问题。怎么能解决这个问题?我无法理解为什么这样的结果。这段代码如下。感谢您的建议。

$sql = "SELECT * FROM `tablename` WHERE `title` LIKE '%bat%' ORDER BY RAND() LIMIT 30;";

2 个答案:

答案 0 :(得分:0)

如果你只想要等于WORD“bat”的标题:

$sql = "SELECT * FROM `tablename` WHERE `title` = 'bat' ORDER BY RAND() LIMIT 30;";

现在,如果你想要包含单词“bat”的标题而不是包含它的单词,你可以试试这个:

$sql = "SELECT * FROM `tablename` 
        WHERE `title` LIKE '% bat %' 
        ORDER BY RAND() LIMIT 30;";

或使用REGEXP

$sql = "SELECT * FROM `tablename` 
        WHERE `title` RLIKE '[[:<:]]bat[[:>:]]' 
        ORDER BY RAND() LIMIT 30;";

但在这种情况下,它与此问题重复:MySQL - How to search for exact word match using LIKE?

答案 1 :(得分:0)

最简单的方法是使用正则表达式匹配确切的单词bat

where `title` REGEXP '[[:<:]]bat[[:>:]]' 

[[:<:]][[:>:]] 字边界bla bat, bla次传递,batmanabat不会传递