当我们使用查询,条件常常会遇到模糊查询。的模糊查询相关的字符串模式匹配。

这里,主要约两:标准SQL模式匹配、扩展正则表达式模式匹配。

    一、标准的SQL模式匹配

SQL的模式匹配同意你使用“_”匹配不论什么单个字符,而“%”匹配随意数目字符(包含零个字符)。

在MySQL中。SQL的模式缺省是忽略大写和小写的。以下显示一些样例。注意在你

使用SQL模式时,你不能使用=或!=;而使用LIKE或NOT LIKE比較操作符。

为了找出包括正好5个字符的名字,使用“_”模式字符,能够这样写:

SELECT * FROM student WHERE name LIKE "_ _ _ _ _";(空格是没有的。仅仅是为了演示方便)

“%”匹配与oracle一样一样的。此处省略。

二、扩展正則表達式模式匹配

    与Java或javascript正則表達式的使用方法类似。

由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模式匹配)。

    为了定位一个模式以便它必须匹配被測试值的開始或结尾,在模式開始处使用“^”或在模式的结尾用“$”。

下面为简单演示样例:

为了找出以“b”开头的名字,使用“^”匹配名字的開始而且“[bB]”匹配小写或大写的“b”:

    mysql> SELECT * FROM student 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 student 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 student 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 student 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 student 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 |

    +-------+--------+---------+------+------------+-------+

版权声明:本文博主原创文章,博客,未经同意不得转载。

MySQL九读书笔记 字符串模式匹配的更多相关文章

  1. 《高性能MySQL》读书笔记--锁、事务、隔离级别 转

    1.锁 为什么需要锁?因为数据库要解决并发控制问题.在同一时刻,可能会有多个客户端对表中同一行记录进行操作,比如有的在读取该行数据,其他的尝试去删除它.为了保证数据的一致性,数据库就要对这种并发操作进 ...

  2. 【高性能Mysql 】读书笔记(三)

    第5章 创建高性能的索引 本文为<高性能Mysql 第三版>第四章读书笔记,Mysql版本为5.5 索引基础 索引的重要性:找一本800面的书的某一段内容,没有目录也没有页码(页码也可类比 ...

  3. 【高性能Mysql 】读书笔记(二)

    第4章 Schema 与数据类型优化 本文为<高性能Mysql 第三版>第四章读书笔记,Mysql版本为5.5 选择优化的数据类型 选择合适数据类型的三个原则 更小的通常更好 - 速度更快 ...

  4. 高性能MySQL(第4版) 第一章 MySQL架构 读书笔记

    这本书去年11月出的,今年中文版也出了,并且直接上了微信读书,之后有空就读一读,分享下读书笔记~ 原文内容比较充实,建议有时间可以读一下原文. 第一章主要是个概览. MySQL的逻辑架构 默认情况下, ...

  5. 《高性能MySQL》读书笔记(上)

    <High Performance MySQL>真是本经典好书,从应用层到数据库到硬件平台,各种调优技巧.常见问题全都有所提及.数据库的各种概念技巧平时都有接触,像索引.分区.Shardi ...

  6. 《高性能MySQL》读书笔记(1)

    慢查询 当一个资源变得效率低下的时候,应该了解一下为什么会这样.有如下可能原因:1.资源被过度使用,余量已经不足以正常工作.2.资源没有被正确配置3.资源已经损坏或者失灵 因为慢查询,太多查询的实践过 ...

  7. 《高性能MySQL》读书笔记之创建高性能的索引

    索引是存储引擎用于快速找到记录的一种数据结构.索引优化是对查询性能优化的最有效手段.索引能够轻易将查询性能提高几个数量级.创建一个最优的索引经常需要重写查询.5.1 索引基础 在MySQL中,存储引擎 ...

  8. 《c程序设计语言》读书笔记--字符串比较

    举例如下: char a[10]; 1.定义的时候直接用字符串赋值 char a[10]="hello"; 注意:不能先定义再给它赋值,如  char a[10];  a[10]= ...

  9. 《c程序设计语言》读书笔记--字符串复制

    #include <stdio.h> #define MAXLINE 10 int getLine(char s[], int lim); void copy(char to[], cha ...

随机推荐

  1. C语言深度解剖读书笔记

    开始本节学习笔记之前,先说几句题外话.其实对于C语言深度解剖这本书来说,看完了有一段时间了,一直没有时间来写这篇博客.正巧还刚刚看完了国嵌唐老师的C语言视频,觉得两者是异曲同工,所以就把两者一起记录下 ...

  2. 《你不知道的JavaScript(上)》笔记——提升

    笔记摘自:<你不知道的JavaScript(上)>第3章 提升 1.包括变量和函数在内的所有声明都会在任何代码被执行前首先被处理. 2.变量和函数声明从它们在代码中出现的位置被“移动”到了 ...

  3. <一> 爬虫的原理

    一.爬虫是什么? #1.什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样. #2.互联网建立的目的? 互联网的核心价值在于数据的共享/传递:数 ...

  4. centos7 分区满了,分析哪个目录或文件占用空间-小叶-51CTO博客

    原文:centos7 分区满了,分析哪个目录或文件占用空间-小叶-51CTO博客 du -sh 例如: [root@zabbix ~]# du -sh /var/* 0 /var/adm 132M / ...

  5. JS数据结构第二篇---链表

    一.什么是链表 链表是一种链式存储的线性表,是由一组节点组成的集合,每一个节点都存储了下一个节点的地址:指向另一个节点的引用叫链:和数组中的元素内存地址是连续的相比,链表中的所有元素的内存地址不一定是 ...

  6. LA-3708 - Graveyard 简单的模拟一下即可

    一开始不知道在想啥,竟然写了个双重for循环的.T T一直WA,又没效率. T T然后在纸上模拟演算,改了,就AC了 以后做题果断要先模拟一下例子...能加深对题目的理解. 当教训吧..太懒导致写了好 ...

  7. [Angular2 Form] Angular 2 Template Driven Form Custom Validator

    In this tutorial we are going to learn how we can also implement custom form field validation in Ang ...

  8. POJ 2387 Til the Cows Come Home (Dijkstra)

    传送门:http://poj.org/problem?id=2387 题目大意: 给定无向图,要求输出从点n到点1的最短路径. 注意有重边,要取最小的. 水题..对于无向图,从1到n和n到1是一样的. ...

  9. QAtomicInt支持四种类型的操作,Relaxed、Acquired、Release、Ordered

    Memory Ordering   Background 很久很久很久以前,CPU忠厚老实,一条一条指令的执行我们给它的程序,规规矩矩的进行计算和内存的存取. 很久很久以前, CPU学会了Out-Of ...

  10. Best Practices for QML and Qt Quick

    Despite all of the benefits that QML and Qt Quick offer, they can be challenging in certain situatio ...