mysql - 查询 n 个词距离内的两个表达式的文本

标签 mysql select

我正在寻找一种方法来查询 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.

我找不到将其作为条件包含在 selectlike 命令中的方法。

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 个单词的范围内找到 sedeirmod,那么你可以通过交替扩展正则表达式:

SELECT *
FROM yourTable
WHERE text RLIKE 'sed ([^ ]* ){0,3}eirmod|eirmod ([^ ]* ){0,3}sed'

关于mysql - 查询 n 个词距离内的两个表达式的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43887970/

相关文章:

java - 在sql中查找上个月最后一天的数据

mysql - 获取横向最大值

php - 如何重命名 Symfony 3/Doctrine 中的表?

MySQL 错误 1241 : Operand should contain 1 column(s)

firefox - 在 Firefox 和 Chrome 中隐藏多行 SELECT 的垂直滚动条?

mysql - 夏令时问题

php - 如何在 PHP 和 MySQL 中一次从 2 个表中获取信息?

mysql - 如何进行有执行时间限制的选择

mysql - 加快我的 mysql 语句

mysql - 如何编写可以跨多个表匹配 3 个参数之一的 select 语句