我已经浏览了关于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

08-25 12:02