用于高级搜索的Mysql查询
我们有一个表“students”,该表有文本列“description”。此列包含学生档案。现在,让我们假设,我们有两个词a)Lorem b)ipsum 我们想让所有这些单词符合以下标准的学生:用于高级搜索的Mysql查询,mysql,sql,Mysql,Sql,我们有一个表“students”,该表有文本列“description”。此列包含学生档案。现在,让我们假设,我们有两个词a)Lorem b)ipsum 我们想让所有这些单词符合以下标准的学生: A.说明必须包含单词:lorem B在单词“lorem”之后,在接下来的20个字符中,如果还有其他单词“ipsum”,那么mysql将返回给我那个学生 我对Mysql的了解一般,但无法进行符合上述条件的查询。有没有人可以分享一个mysql查询,通过它我可以根据上述条件获取记录 提前感谢。您可以使用正则表
A.说明必须包含单词:lorem
B在单词“lorem”之后,在接下来的20个字符中,如果还有其他单词“ipsum”,那么mysql将返回给我那个学生 我对Mysql的了解一般,但无法进行符合上述条件的查询。有没有人可以分享一个mysql查询,通过它我可以根据上述条件获取记录
提前感谢。您可以使用正则表达式:
where description regexp 'lorem.{0,19}ipsum'
现在还不清楚您是希望所有的“ipsum”
都在接下来的20个字符中,还是只想开始。这假设您希望它在接下来的20年内启动。如果您想在20个字符中增加ipsum
,可以调整19
如果要精确匹配单词,请使用单词分隔符:
where description regexp 'lorem.{0,19}[^a-zA-Z]ipsum[^a-zA-Z]'
您可能有一个更好的单词分隔符表达式。MySQL最近更换了正则表达式库,所以我不太愿意使用类似于
\b
的任何东西。谢谢,我只想在接下来的20个字符中搜索我的第二个关键字,不管它是否重复。但如果它存在,那么记录就会出现。我还检查了一些测试用例。如果我的描述包含类似“sdsgd lorem IPSDDS”的文本,则系统正在获取此记录。我只想要那些和第二个单词完全匹配的记录。