我已经浏览了关于stackoverflow的几个类似主题,它们与我的问题相似,但是我没有找到任何可以帮助我的东西。我有这个SQL查询:
SELECT * FROM twitter_result
WHERE LOWER(TweetComment) LIKE LOWER('%lebron james%')
AND LOWER(TweetComment) LIKE LOWER('%NBA%')
我想同时搜索包含“勒布朗·詹姆斯”和“ NBA”一词的TweetComment。但是,这两个词必须独立存在。喜欢它不应该返回包含#LeBron James和#NBA(或NBATalk)的推文
例如,它应该返回这样的一条推文
LeBron James Donates $41 Million To Send 1,100 Kids To College, Becomes 6th Most Charitable Athlete NBA In World
勒布朗·詹姆斯(Lebron James)和NBA独立的地方(没有
#
字符)。我有LOWER
忽略大小写。任何帮助是极大的赞赏。谢谢抱歉,我忘了添加,我只是在PHPMyAdmin中使用SQL
最佳答案
如果您打算使用regexp
用途,
select * from twitter_result
where --ignore tweets that contain #lebron james and #nba
TweetComment not regexp '.*#lebron james.*|.*#nba.*'
--select only those tweets that contain lebron james AND nba
and TweetComment regexp '[[:<:]]lebron james[[:>:]]'
and TweetComment regexp '[[:<:]]nba[[:>:]]'
所有要搜索的模式都必须明确声明,因为默认情况下MySQL不支持环顾四周。
默认情况下,以上匹配不区分大小写。如果搜索需要区分大小写,请使用
regexp binary
。根据需要添加更多搜索词。Sample fiddle