我已经在stackoverflow上查看了几个类似的主题,这与我的问题类似,但我找不到任何可以帮助我的东西。我有这个SQL查询:
SELECT * FROM twitter_result
WHERE LOWER(TweetComment) LIKE LOWER('%lebron james%')
AND LOWER(TweetComment) LIKE LOWER('%NBA%')
我想搜索一个TweetComment,其中包含" LeBron James" " NBA"在同一时间。但这两个词需要独立存在。就像它不应该返回包含#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
答案 0 :(得分:2)
虽然有使用正则表达式的解决方案,但在不知道您正在使用的数据库的情况下很难提出解决方案。
相反,您可以在执行like
之前删除您不想要的标记:
WHERE REPLACE(LOWER(TweetComment), '#lebron james', '') LIKE LOWER('%lebron james%') AND
REAPLCE(LOWER(TweetComment), '#nba', '') LIKE LOWER('%NBA%')
答案 1 :(得分:1)
如果您打算使用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
。根据需要添加更多搜索词。