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

这里,主要约两:标准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. css函数——calc()和attr()

    css也有函数?好吧,我孤陋寡闻了.这里记录一下学习情况. calc()函数 定义:用于动态计算长度值 支持版本:css3 运算符前后都需要保留一个空格,例如:width: calc(100% - 1 ...

  2. 最大公约数最小公倍数 (例:HDU2028 Lowest Common Multiple Plus)

    也称欧几里得算法 原理: gcd(a,b)=gcd(b,a mod b) 边界条件为 gcd(a,0)=a; 其中mod 为求余 故辗转相除法可简单的表示为: int gcd(int a, int b ...

  3. struts2--笔记(一)

    1.什么是struts2? 框架是一些已经写好的代码,一般情况下于产品是无关的,可以提高效率. 2.javaEE的三层结构:表现层.业务层.持久层组成,struts是变现层的一个框架结构,分成结构的方 ...

  4. POJ 3100 Root of the Problem || 1004 Financial Management 洪水!!!

    水两发去建模,晚饭吃跟没吃似的,吃完没感觉啊. ---------------------------分割线"水过....."--------------------------- ...

  5. php用两个栈来实现队列

    php用两个栈来实现队列 一.总结 我主要的问题是不知道的是题目描述,题目和贵的代码之间的关系,以及返回值 思路:A栈做入队操作,B栈做出队操作,入队的时候元素直接入A,出队的时候判断B栈是否为空,如 ...

  6. ZOJ 3204 Connect them 继续MST

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3367 题目大意: 让你求最小生成树,并且按照字典序输出哪些点连接.无解输出-1 ...

  7. UVALive - 3977 Summits (BFS染色)

    题目大意:坑爹的题目.题意那么难理解. 讲的就是,假设该点是山顶的话(高度为h).那么以该点为中心,往外辐射.走高度大于h-d的点,到达不了还有一个比它高的点 这就提示了,高度要从大到小排序,依次以高 ...

  8. HDU - 3078 Network(暴力+LCA)

    题目大意:给出n个点的权值.m条边,2种操作 0 u num,将第u个点的权值改成num k u v,询问u到v这条路上第k大的权值点 解题思路:该点的话直接该,找第k大的话直接暴力 #include ...

  9. ASP.NET 的 ViewState Cookie Session 等的比較

    类型 值保存在哪 值的有效范围 备注 View State client 不能跨页面传递.仅仅能在当前页面保存数据. 在HTML中能够看到ViewState值,只是是加密. 不是明文. ViewSta ...

  10. [Ramda] Compose lenses

    We can compose lenses to get value: const addrs = [{street: '99 Walnut Dr.', zip: '04821'}, {street: ...