PHP MySQL搜索单词,如果%100等于我搜索的单词" bat"我看到"蝙蝠侠"在结果中。我只想列出标题是否包含" bat",我不想列出是否包含" batman"
我尝试了很多方法。我无法解决这个问题。怎么能解决这个问题?我无法理解为什么这样的结果。这段代码如下。感谢您的建议。
$sql = "SELECT * FROM `tablename` WHERE `title` LIKE '%bat%' ORDER BY RAND() LIMIT 30;";
答案 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
次传递,batman
和abat
不会传递