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