MYSQL如何在一个句子中匹配两个单词
我有一个表,列mytext包含句子 我想搜索那些有两个单词的句子,如“我的”“学校”,顺序任意 我想要的结果是MYSQL如何在一个句子中匹配两个单词,mysql,regex,database,Mysql,Regex,Database,我有一个表,列mytext包含句子 我想搜索那些有两个单词的句子,如“我的”“学校”,顺序任意 我想要的结果是 牛津是我的学校 我的名字是kk学校是jes 等等。您可以使用全文搜索 全文搜索基于全文索引,只能为MyISAM表、文本列以及非二进制CHAR和VARCHAR列创建全文索引 全文搜索不区分大小写。这是可以使用全文索引的列类型的结果 就你而言: 从mytable中选择*以匹配(mycolumn)与(“我的学校”) 如果您使用的是InnoDB表(很可能是),您可以使用LIKE语句: 从my
等等。您可以使用全文搜索 全文搜索基于全文索引,只能为MyISAM表、文本列以及非二进制CHAR和VARCHAR列创建全文索引 全文搜索不区分大小写。这是可以使用全文索引的列类型的结果 就你而言:
从mytable中选择*以匹配(mycolumn)与(“我的学校”) 如果您使用的是InnoDB表(很可能是),您可以使用LIKE语句:
从mytable中选择*,mycolumn如“%my%”
或者像“%school%”这样的mycolumn;
对于全文搜索,更好的解决方案是使用专门的搜索引擎,并针对这些目的进行优化。例如。查询:SELECT *
FROM mytable
WHERE mycolumn LIKE "%my%"
and mycolumn LIKE "%school%";
还将返回以下句子:
- “mysql学校”
- “我以前的父母”
SELECT *
FROM mytable
WHERE mycolumn regexp ' my |^my | my$'
and mycolumn regexp ' school |^school | school$'
但如果在mycolumn一栏中有如下句子:
- 我爱我的学校李>
SELECT *
FROM mytable
WHERE mycolumn regexp ' my |^my | my$'
and mycolumn regexp '[^a-zA-Z]school[^a-zA-Z]|^school | school$'
你可以用
从表1中选择*,其中mycolumn REGEXP'(?=.*\bmy\b)(?=.*\bschool\b)'代码>
(?=
这是一个正向前瞻。它与模式匹配,但不使用字符
*
匹配任意数量的任意字符
\b
匹配单词边界
这是一个很好的方法,因为您可以添加新词,只需添加更积极的外观标题,如下所示:
从mycolumn REGEXP'(?=.*\bmy\b)(?=.*\bspecial\b)(?=.*\bschool\b)所在的表1中选择*;
(在一些应用程序中测试它,如HeidiSQL,可能需要逃避\使用\)你好,谢谢我尝试过它,但它不会返回句子“我的名字是kk学校是jes”从mytable中选择*,mytext REGEXP“school | my”
可能会起作用。你好,谢谢你的帮助,它返回的句子有“school”或“my”并非所有的hanks查询都是我想要的,hanks for regexp解决方案!