关键词搜索实现两种方式
-- 方式1 模糊匹配搜索
-- 场景一:搜索出来地址内包含‘李’和‘中国’的
select * from tn_md_cust_link where address like concat ('%李%') or address like concat ('%中国%')
-- 场景二:搜索地址或者名称包含 ‘181’ 的
select * from tn_md_cust_link where address like concat ('%181%') or link_person like concat ('%181%')
-- 方式2 正则搜索
-- 场景一:搜索出来地址内包含‘李’和‘中国’的
SELECT * FROM tn_md_cust_link WHERE address REGEXP '李|中国';
正则搜索使用参考注意
使用正则表达式进行关键词搜索
假设我们想要查找内容中包含某个关键词或模式的文章。可以使用 REGEXP 或 RLIKE 来实现这一点。
示例 1:查找包含单个关键词的文章
下面的查询将查找内容中包含“SQL”这个词的所有文章:
sql
SELECT * FROM articles WHERE content REGEXP ‘SQL’;
示例 2:查找包含多个关键词的文章
如果我们希望查找内容中包含多个关键词(例如“SQL”和“performance”),可以使用正则表达式的 OR 操作符 |:
sql
SELECT * FROM articles WHERE content REGEXP ‘SQL|performance’;
示例 3:忽略大小写进行关键词搜索
MySQL 的 REGEXP 操作符默认不区分大小写。如果你想要区分大小写,可以使用 REGEXP BINARY:
sql
SELECT * FROM articles WHERE content REGEXP BINARY ‘SQL’;
完整示例
综合以上,假设我们想要查找内容中包含“SQL”或者“advanced”的所有文章:
sql
SELECT * FROM articles WHERE content REGEXP ‘SQL|advanced’;
这个查询会返回所有内容中包含“SQL”或“advanced”的文章。
注意事项
性能问题: 正则表达式匹配可能会导致查询性能下降,尤其是在大型数据集上。请确保在需要时优化查询性能。
索引: 正则表达式匹配通常无法利用索引,因此在执行频繁的正则表达式搜索时请注意性能影响。
数据库支持: 并非所有的 SQL 数据库管理系统都原生支持正则表达式匹配,请根据具体的数据库系统参考相应的文档。