我正在寻找一种方法来查询 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. At 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%'
有办法吗?或者是否需要完全不同的方法?提前谢谢你。
最佳答案
你可以在这里使用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'
关于mysql - 查询 n 个词距离内的两个表达式的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43887970/