MySQL 另一种强大的模糊匹配 您所在的位置:网站首页 sql语句中的正则表达式怎么写 MySQL 另一种强大的模糊匹配

MySQL 另一种强大的模糊匹配

2024-07-06 10:14| 来源: 网络整理| 查看: 265

说到MySQL的模糊匹配,大家都能想到like,很少人会知道regexp,regexp 可以实现更强大的模糊匹配功能,而且还有很多其他好用的功能。

比如有一个学生表 student ,要查询姓赵、王、李、陈的学生,用like写会啰嗦,而且性能不好:

SELECT * FROM student  WHERE name like '赵%' or name like '王%' or name like '李%' or name like '陈%' ;

用regexp 写则很简单:

SELECT * FROM student  WHERE name  REGEXP  '^赵|^王|^李|^陈' ;

 

示例:

1,匹配以陈开头的学生:

SELECT * FROM student  WHERE name  REGEXP  '^陈';

2,匹配以豪结尾的学生:

SELECT * FROM student  WHERE name  REGEXP  '豪$';

3,匹配名字中含有 英、雄、豪、杰 其中一个字的学生

SELECT * FROM student  WHERE name  REGEXP  '英|雄|豪|杰' ;

或者 SELECT * FROM student  WHERE name  REGEXP  '[英雄豪杰]' ;

上面两句的区别:都是单个字符用下面的,如果是多个字符用上面的,比如包含 ‘英雄’2字。

4,检索密码这个字段,包含字母“b”和“g”范围内的所有名称,接着跟任意一个字符,后跟字母“a”。例如,Tobias, sewall.

匹配任何单个字符(.)

SELECT * FROM student  WHERE password REGEXP    '[b-g].[a]' ;

5,匹配任何不在方括号中列出的字符。([^abc]):

给出所有不包含“j”或“z”的名称。例如: nerton, sewall

SELECT * FROM student  WHERE password REGEXP '[^jz]' ;

6,匹配单词结尾[[:>:]]:

给出所有姓名以字符“志豪”结尾的学生。例子——陈志豪.

SELECT * FROM student  WHERE name  REGEXP  '志豪[[:>:]]';

regexp规则一览 规则解释*在它之前的零个或多个字符串实例+在它之前的一个或多个字符串实例.任何一个角色?匹配前面的字符串的零个或一个实例。^插入符号(^)匹配字符串的开头$字符串结束[abc]方括号之间列出的任何字符[^abc]方括号之间未列出的任何字符[A-Z]匹配任何大写字母。[a-z]匹配任何小写字母[0-9]匹配从0到9的任何数字。[[::]]匹配单词的结尾。[:class:]匹配一个字符类,即[:alpha:]匹配字母,[:space:]匹配空格,[:punct:]匹配标点符号,[:upper:]匹配上层字母。p1|p2|p3轮换; 匹配任何模式p1,p2或p3{n}n前面元素的实例{m,n}m到前面元素的n个实例  

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有