Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于高级搜索的Mysql查询_Mysql_Sql - Fatal编程技术网

用于高级搜索的Mysql查询

用于高级搜索的Mysql查询,mysql,sql,Mysql,Sql,我们有一个表“students”,该表有文本列“description”。此列包含学生档案。现在,让我们假设,我们有两个词a)Lorem b)ipsum 我们想让所有这些单词符合以下标准的学生: A.说明必须包含单词:lorem B在单词“lorem”之后,在接下来的20个字符中,如果还有其他单词“ipsum”,那么mysql将返回给我那个学生 我对Mysql的了解一般,但无法进行符合上述条件的查询。有没有人可以分享一个mysql查询,通过它我可以根据上述条件获取记录 提前感谢。您可以使用正则表

我们有一个表“students”,该表有文本列“description”。此列包含学生档案。现在,让我们假设,我们有两个词a)Lorem b)ipsum

我们想让所有这些单词符合以下标准的学生:
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”的文本,则系统正在获取此记录。我只想要那些和第二个单词完全匹配的记录。