MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi、grep和sed的扩展正则表达式模式匹配的格式。 
SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL中,SQL的模式缺省是忽略大小写的。
下面显示一些例子。注意在你使用SQL模式时,你不能使用=或!=;而使用LIKE或NOT LIKE比较操作符。
为了找出以“b”开头的名字:
mysql> SELECT * FROM pet WHERE name LIKE "b%";
+--------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+------------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+
为了找出以“fy”结尾的名字:
mysql> SELECT * FROM pet WHERE name LIKE "%fy";
+--------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+
为了找出包含一个“w”的名字:
mysql> SELECT * FROM pet WHERE name LIKE "%w%";
+----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+
为了找出包含正好5个字符的名字,使用“_”模式字符:
mysql> SELECT * FROM pet WHERE name LIKE "_____";
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+
   由MySQL提供的模式匹配的其他类型是使用扩展正则表达式。当你对这类模式进行匹配测试时,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)。
扩展正则表达式的一些字符是:
“.” 匹配任何单个的字符。 
一个字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的一个范围,使用一个“-”。“[a-z]”匹配任何小写字母,而“[0-9]”匹配任何数字。 
“ * ”匹配零个或多个在它前面的东西。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配的任何数量的数字,而“.*”匹配任何数量的任何东西。 
正则表达式是区分大小写的,但是如果你希望,你能使用一个字符类匹配两种写法。例如,“[aA]”匹配小写或大写的“a”而“[a-zA-Z]”匹配两种写法的任何字母。 
如果它出现在被测试值的任何地方,模式就匹配(只要他们匹配整个值,SQL模式匹配)。 
为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。 
为了说明扩展正则表达式如何工作,上面所示的LIKE查询在下面使用REGEXP重写:
为了找出以“b”开头的名字,使用“^”匹配名字的开始并且“[bB]”匹配小写或大写的“b”:
mysql> SELECT * FROM pet WHERE name REGEXP "^[bB]";
+--------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+------------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+
为了找出以“fy”结尾的名字,使用“$”匹配名字的结尾:
mysql> SELECT * FROM pet WHERE name REGEXP "fy$";
+--------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+
为了找出包含一个“w”的名字,使用“[wW]”匹配小写或大写的“w”:
mysql> SELECT * FROM pet WHERE name REGEXP "[wW]";
+----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+
既然如果一个正规表达式出现在值的任何地方,其模式匹配了,就不必再先前的查询中在模式的两方面放置一个通配符以使得它匹配整个值,就像如果你使用了一个SQL模式那样。
为了找出包含正好5个字符的名字,使用“^”和“$”匹配名字的开始和结尾,和5个“.”实例在两者之间:
mysql> SELECT * FROM pet WHERE name REGEXP "^.....$";
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+
你也可以使用“{n}”“重复n次”操作符重写先前的查询:
mysql> SELECT * FROM pet WHERE name REGEXP "^.{5}$";
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+

转载于:https://www.cnblogs.com/visoeclipse/archive/2009/10/23/1588538.html

mysql的匹配模式相关推荐

  1. mysql 中文匹配_MYSQL-中文检索匹配与正则表达式

    今天在做mysql的一个搜索的时候发现我用 select name from contact where name like '%a%'的时候出来的结果除了包含a的名字外连包含中文"新&qu ...

  2. vim 底行命令模式的正则表达式(匹配模式)

    文章目录 一.vim 替换表达式的语法格式 二.vim 关于 range 的表达式 三.vim 关于 flags 的元字符 四.vim 关于数量的元字符 五.环视和固化分组 六.vim 替换表达式的示 ...

  3. MySQL模糊匹配查询LIKE,REGEXP,IN

    MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi.grep和sed的扩展正则表达式模式匹配的格式 下图是示例用到的数据表信息 一.SQL模式 SQL的模式匹配允许你使用&quo ...

  4. MySQL 主从同步模式

    目录 MySQL 主从同步模式 主从同步结构 结构类型 配置一主多从结构 拓扑结构 配置从服务器 测试一主多从的配置 配置主从从结构 拓扑结构 配置主服务器 配置从服务器 测试配置 配置主主结构 拓扑 ...

  5. mysql万能匹配_万能药模式匹配

    mysql万能匹配 In this story, we will see together the different aspects of Elixir Pattern Matching: tupl ...

  6. R语言str_extract函数从字符串中抽取匹配模式的字符串

    R语言str_extract函数从字符串中抽取匹配模式的字符串 目录 R语言str_extract函数从字符串中抽取匹配模式的字符串 #导入包和库

  7. rabbitmq中的三种交换器(匹配模式)

    direct(直接交换模式) 消息中的路由键(routing key)如果和Binding中的binding key一致,交换器就将消息发到对应的队列中.它是完全匹配,单播的模式. fanout(广播 ...

  8. mysql给字段设置默认值,以及mysql的严格模式

    一.背景 在插入数据库时,报错#1364,后来才知道是字段在创建的时候,没有设置默认值的原因.关于默认值,我们都知道设置默认值为0或者null的时候,就算我们不插入该字段,数据库也会自动按照默认值填充 ...

  9. java中正则全局匹配_JS中正则表达式全局匹配模式/g用法实例

    JS中正则表达式全局匹配模式 /g用法详解 本文章来详细介绍js中正则表达式的全局匹配模式 /g用法, var str = "123#abc"; var re = /abc/ig; ...

  10. mysql事务提交模式

    查看mysql的提交模式:select @@autocommit:  '0'表示手动提交,'1'表示自动提交 mysql默认是自动提交的,也就是你提交一个Query,它就直接执行. set autoc ...

最新文章

  1. 下面是DHCP协议工作的4种消息,正确的顺序应该是(40)。【答案】B
  2. linkedin软件 iPad pro 2018 和huawei mate 30内存使用的对比情况
  3. 阿里算法工程师公开机器学习路线,你的路走对了吗?
  4. 矩阵快速幂 学习笔记
  5. Ubuntu 12.04下NFS安装配置图解
  6. 两表查询很慢mysql_影响mysql性能的方面
  7. python字符串长度排序_python-对混合类型和不同长度的字符串进行排序
  8. 南航大学计算机专业硕士学历,南航计算机科学与技术学院导师介绍:戴群
  9. 范围变更管控案例_项目变更管理案例.doc
  10. 服务器如何查询网站域名备案号,如何查询域名备案号
  11. 2022年双非计算机保研经历分享(浙大、北航、中科院等)
  12. 影院体验系列_中国电影博物馆IMAX GT厅_《失控玩家》
  13. 高考试题管理系统出题模块——C语言课程设计
  14. linux的iso镜像文件,linux系统安装iso文件方法
  15. 【软件质量保证与测试】2.4软件测试与软件开发的关系
  16. tplink支持Linux的无线网卡,解决tp-link usb无线网卡在ubuntu14.04下无法使用的一种方法...
  17. 高级过程控制系统实验装置
  18. 如何应对人事(HR)的面试问题?
  19. 最强偏振3D播放器TriDef 3D安装+全格式播放配置
  20. [转] 理解各种熵最大熵模型

热门文章

  1. resin 配置 java_home_resin的安装与配置 - chencheng-linux的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. c语言汽水瓶编程,汽水瓶 题目(C语言代码)
  3. linux 线程同步与互斥:读写锁 线程读操作较多,写操作较少时,使用读写锁
  4. 引用springboot starter 的springboot项目无法引用 springboot starter依赖的项目中的类
  5. 一文读懂python数据分析_一文读懂聚类算法
  6. java重新打开jframe,Java的; Jframe不重新绘制
  7. vue 查看变量类型_前端开发问题集:Vue开发中数据更新了,为何视图没有发生变化呢...
  8. Java网络编程介绍
  9. 【渝粤教育】国家开放大学2018年秋季 0313-22T促销策划与实战 参考试题
  10. C++并发与多线程(三)单例设计模式与共享数据分析、call_once、condition_variable使用