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

这里,主要约两:标准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. ajax+客户端与服务器端的交互

    一. AJAX 原生JS var xhr=new XMLHttpRequest(); xhr.open("GET","[请求地址]",false); xhr.o ...

  2. [D3] Build a Scatter Plot with D3 v4

    Scatter plots, sometimes also known as bubble charts, are another common type of visualization. They ...

  3. Netty原理和使用

    性能主题 Netty原理和使用 Netty是一个高性能 事件驱动的异步的非堵塞的IO(NIO)框架,用于建立TCP等底层的连接,基于Netty可以建立高性能的Http服务器.支持HTTP. WebSo ...

  4. php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习)

    php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习) 一.总结 1.递归不优化的话,30层开外就有点吃力了 2.php因为定义变量的时候不用定义变量类型,所以数组里面的类型也是p ...

  5. 【20.23%】【codeforces 740A】Alyona and copybooks

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  6. js中退出语句break,continue和return 比较 (转)

    在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是返回的同时也将函数停止 首先:break和continue两个一 ...

  7. Xamarin Android 绑定 UVCCamera

    这段时间工作上需要在Android设备上读取视频.摄像头用的是奥比中光的3D摄像头.我手上的摄像头的彩色通道使用的的UVC协议的. 在Xamarin上可用的UVC的封装基本上没有,只有一个小伙在Xam ...

  8. ios开发网络学八:NSURLSession相关代理方法

    #import "ViewController.h" @interface ViewController ()<NSURLSessionDataDelegate> /* ...

  9. TF-IDF计算方法和基于图迭代的TextRank

    文本处理方法概述 说明:本篇以实践为主,理论部分会尽量给出参考链接 摘要: 1.分词 2.关键词提取 3.主题模型(LDA/TWE) 4.词的两种表现形式(词袋模型和分布式词向量) 5.关于文本的特征 ...

  10. gcc编译选项--转

    gcc提供了大量的警告选项,对代码中可能存在的问题提出警告,通常可以使用-Wall来开启以下警告:           -Waddress -Warray-bounds (only with -O2) ...