Mysql 在n个单词范围内查询两个表达式的文本

Mysql 在n个单词范围内查询两个表达式的文本,mysql,select,Mysql,Select,我正在寻找一种方法来查询MySQL数据库中包含文本的列,查找两个表达式出现在n个单词或字符之间的情况。例如,以下句子中“eirmod”3个单词内的“sed” Lorem ipsum dolor sit amet,Conseteur sadipscing Eliter,seddiam 非恶性eirmod临时劳动和医疗保险 埃拉特,塞德·迪亚姆·沃卢普塔。在vero eos和accusam和justo duo dolores 以此类推 我找不到将其作为条件包含在select和like命令中的方法 S

我正在寻找一种方法来查询MySQL数据库中包含文本的列,查找两个表达式出现在n个单词或字符之间的情况。例如,以下句子中“eirmod”3个单词内的“sed”

Lorem ipsum dolor sit amet,Conseteur sadipscing Eliter,seddiam 非恶性eirmod临时劳动和医疗保险 埃拉特,塞德·迪亚姆·沃卢普塔。在vero eos和accusam和justo duo dolores 以此类推

我找不到将其作为条件包含在
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'

您可以在此处使用类似的
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'
你可以试试正则表达式

select * from table
where regexp '^sed[[:blank:]][[:alpha:]]+[[:blank:]][[:alpha:]]+
[[:blank:]]eirmod'
你可以试试正则表达式

select * from table
where regexp '^sed[[:blank:]][[:alpha:]]+[[:blank:]][[:alpha:]]+
[[:blank:]]eirmod'

看起来很好用。非常感谢。理解
rlike
命令的工作原理只有一个问题:
([^]*){0,10}
的确切含义是什么?
([^]*)
{0,3}表示任何后跟一个空格的非空格字符,整个数量出现在0到3次之间。这是在检查
sed
eirmod
之间最多三个单词。完美!这正是我想要的。谢谢看起来很好用。非常感谢。理解
rlike
命令的工作原理只有一个问题:
([^]*){0,10}
的确切含义是什么?
([^]*)
{0,3}表示任何后跟一个空格的非空格字符,整个数量出现在0到3次之间。这是在检查
sed
eirmod
之间最多三个单词。完美!这正是我想要的。谢谢