我正在寻找一种方法来查询包含文本的MySQL数据库中的列,以查找两个表达式在 n 单词或字符的距离内发生的情况。例如:以下句子中的“eirmod”的3个单词中的“sed”。
Lorem ipsum dolor sit amet,consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,sed diam voluptua。在vero eos et accusam et justo duo dolores et ea rebum。
我无法找到将其作为select
和like
命令中的条件包含的方法。
SELECT * FROM database as db
WHERE db.text like '%sed%' AND db.text like '%eirmod%'
有办法吗?或者是必要的完全不同的方法?提前谢谢。
答案 0 :(得分:0)
您可以在此处使用RLIKE
:
SELECT *
FROM yourTable
WHERE text RLIKE 'sed ([^ ]* ){0,3}eirmod'
如果您想以任意顺序在3个单词之间找到sed
和eirmod
,那么您可以通过替换扩展正则表达式:
SELECT *
FROM yourTable
WHERE text RLIKE 'sed ([^ ]* ){0,3}eirmod|eirmod ([^ ]* ){0,3}sed'
答案 1 :(得分:0)
你可以尝试使用正则表达式
select * from table
where regexp '^sed[[:blank:]][[:alpha:]]+[[:blank:]][[:alpha:]]+
[[:blank:]]eirmod'