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

这里,主要约两:标准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. POJ 3278 Catch That Cow(BFS 剪枝)

    题目链接:http://poj.org/problem?id=3278 这几次都是每天的第一道题都挺顺利,然后第二道题一卡一天. = =,今天的这道题7点40就出来了,不知道第二道题在下午7点能不能出 ...

  2. WPF学习笔记——概述

    如果你选择WPF,多半原因是因为折服于它那震撼性的用户体验.纵观WPF整个知识体系,其内容并不复杂,但却比较细碎,不易理清.以下内容是对WPF部分内容的简单概括,希望读者能够对WPF框架有个大体认识. ...

  3. 四种卸载Mac软件的方法

    从 Mac 电脑上卸载已经安装的应用程序可能是你知道的操作系统里面最简单的一种了.而如果你是一名新买了 Mac 电脑的用户,那么你可能比较困惑:怎么没有控制面板中的相应板块来卸载它们呢?但是其实你想不 ...

  4. 使用maven进行测试设置断点调试的方法

    在Maven中配置测试插件surefire来进行单元测试,默认情况下,surefire会执行文件名以Test开头或结尾的测试用例,或者是以TestCase结尾的测试用例.               ...

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

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

  6. [转]在Win7 64位注册ActiveX控件

    原文作者: K_H_H 原文地址: http://blog.sina.com.cn/s/blog_56b96c5a0100ztc7.html  首先必须以管理员身份运行cmd.exe,即在cmd.ex ...

  7. LDR: LdrpWalkImportDescriptor() failed to probe C:\WINDOWS\system32\opencv_core243d.dll for its manifest, ntstatus 0xc0150002

    LDR: LdrpWalkImportDescriptor() failed to probe C:\WINDOWS\system32\opencv_core243d.dll for its mani ...

  8. OpenGL_ES-纹理

    OpenGL_ES2.0 -纹理 一:纹理基础: 1: 纹素的概念: 一个二维纹理在OpenGLES2.0中是非经常见的,二维纹理就是一个二维数组,每一个数据元素称为纹素,详细格式例如以下: GL_R ...

  9. HDU 1010 Tempter of the Bone (ZOJ 2110) DFS+剪枝

    传送门: HDU:http://acm.hdu.edu.cn/showproblem.php?pid=1010 ZOJ:http://acm.zju.edu.cn/onlinejudge/showPr ...

  10. 使Sublime Text支持除UTF8外多种编码 - ConvertToUTF8

    前几天,在使用了Sublime Text多天之后,感觉完全可以代替系统自带记事本,所以就通过其打开了一个记事本文件,但是打开之后尽然是乱码,在思考了一下之后想到记事本的编码是ANSI编码,那么这就应该 ...