使用MySQL正则表达式 __MySQL必知必会

正则表达式作用是匹配方本,将一个模式(正则表达式)与一个文本串进行比较。

MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据。

MySQL仅支持多数正则表达式实现的一个很小的子集。

----------------------

9.2.1  基本字符匹配

REGEXP后所跟的东西作为正则表达式处理。

SELECT prod_nameFROM productsWHERE prod_name REGEXP ‘1000‘ORDER BY prod_name;

------返回------+------------------------+|    prod_name    |+------------------------+|  JetPack 1000  |+------------------------+

.  表示匹配任意一个字符。

SELECT prod_nameFROM productsWHERE prod_name REGEXP ‘.000‘ORDER BY prod_name;

------------返回-----------

+-------------------------+|     prod_name    |+-------------------------+|   JetPack 1000  ||   JetPack 2000  |+-------------------------+

MySQL中的正则表达式匹配不区分大小写。

为区分大小写,可使用BINARY关键字。

如:WHERE prod_name REGEXP BINARY ‘JetPack .000‘

9.2.2  进行OR匹配

为搜索两个串之一(或者这个串,或者为另一个串),使用 | 。

| 作为OR操作符,表示匹配其中之一。可给出两个以上的OR条件。

SELECT prod_nameFROM productsWHERE prod_name REGEXP ‘1000 | 2000‘ORDER BY prod_name;

------------返回------------

+----------------------+|  prod_name   |+----------------------+| JetPack 1000 || JetPack 2000 |+----------------------+

[ ] 匹配任何单一字符。

[123]定义一组字符,意思是匹配1或2或3.

[ ]是另外一种形式的OR语句,[123] Ton  就是  [1 | 2 | 3] Ton 的缩写。

^ 否定一个字符集合,将匹配除指定字符外的任何东西。[^123]将匹配除这些字符外的任何东西。

SELECT prod_nameFROM productsWHERE prod_name REGEXP ‘[123] Ton‘ORDER BY prod_name;

-------------返回------------

+--------------------+| prod_name   |+--------------------+| 1 ton anvil    || 2 ton anvil    |+--------------------+

匹配范围

[0123456789] 或 [0-9] 将匹配数字0到9

[a-z] 匹配任意字母符号

SELECT prod_nameFROM productsWHERE prod_name REGEXP ‘[1-5] Ton‘ORDER BY prod_name;

----------返回-----------

+-------------------+|  prod_name |+-------------------+|  .5 ton anvil  ||  1 ton anvil   ||  2 ton anvil   |+-------------------+

匹配特殊字符

\\  为前导。即转义.正则表达式内具有特殊意义的所有字符都必须以这种方式转义。

\\-  表示查找 -

\\.  表示查找 .

SELECT prod_nameFROM vendorsWHERE vend_name REGEXP ‘\\.‘ORDER BY vend_name;

-------------返回-------------

+----------------------+|  vend_name   |+----------------------+|  Furball Inc.    |+----------------------+

\\  也用来引用元字符(具有特殊意义的字符)

\\f    换页\\n    换行\\r    回车\\t    制表\\v    纵向制表

匹配字符类

[:a;num:]    任意字母和数字(同 [a-zA-Z0-9])[:alpha:]     任意字符(同 [a-zA-Z])[:blank:]     空格和制表(同 [\\t])[:cntrl:]        ASCII控制字符(ASCII 0到31和127)[:digit:]       任意数字(同[0-9])[:graph:]    与["print:] 相同,但不包括空格[:lower:]      任意小写字线(同 [a-z])[:print:]        任意可打印字符[:punct:]      既不在 [:alnum:] 又不在 [:cntrl:] 中的任意字符[space:]       包括空格在内的任意空白字符(同 [\\f\\n\\t\\r\\v])[:upper:]     任意大小字母(同 [A-Z])[:xdigit:]      任意十六进制数字(同 [a-fA-F0-9])

匹配多个实例

元字符              说明*                       0个或多个匹配+                      1个或多个匹配(等于 {1, })?                      0个或1个匹配(等于 {0, 1}){n}                    指定数目的匹配{n, }                  不少于指定数目的匹配{n ,m}                匹配数目的范围(m不超过255)

以下例子:s后的?使s可选,因为?匹配它前面的任何字符的0次或1次出现。

SELECT prod_nameFROM productsWHERE prod_name REGEXP ‘\\([0-9] sticks?\\)‘ORDER BY prod_name;

------------返回------------

+-----------------------+|  prod_name    |+-----------------------+|  TNT (1 stick)   ||  TNT (5 sticks) |+-----------------------+

匹配连在一直的4位数字:WHERE prod_name REGEXP ‘[[:digit:]]{4}‘

定位符

^         文本的开始$        文本的末尾[[:<:]]  词的开始[[:>:]]  词的结尾

SELECT prod_nameFROM productsWHERE prod_name REGEXP ‘^[0-9\\.]‘ORDER BY prod_name;

-----------返回----------

+---------------------+|   prod_name  |+---------------------+|  .5 ton anvil   ||  1 ton anvil    ||  2 ton anvil    |+---------------------+

^的双重用途:在集合中(用[ ]定义),用它来否定该集合。否则,用来指串的开始和。

LIKE 匹配整个串,而REGEXP匹配子串。

简单的正则表达式测试  可以在不使用数据库的情况下用SELECT来测试正则表达式。

REGEXP检查总是返回0(没有匹配)或1(匹配),可以用带文字串的REGEXP来测

试表达式,并试验它们。相应的语法如下:

SELECT ‘hello‘ REGEXP ‘[0-9]‘

这个例子返回0(因为文本hello中没有数字)。

from: http://www.cnblogs.com/way_testlife/archive/2010/09/17/1829567.html

时间: 2024-10-24 13:53:12

使用MySQL正则表达式 __MySQL必知必会的相关文章

《MySQL必知必会学习笔记》:正则表达式

正则表达式的应用 前面的几节的过滤例子允许用匹配.比较和通配操作符来寻找数据.对于基本的数据过滤,这样就足够了.但是随着过滤条件的复杂性的增加,where子句本身的复杂性也有必要增加.这也就是正则表达式变得有用的地方. 正则表达式是用来匹配文本中特殊的字符集合. 正则表达式不是自己第一次见,在JAVA/C++ 这些语言中,都有正则表达式,不过他们的用途是一样的,都是匹配文本中的字符串.可能具体的用法不太一样,但也差不多.下面将一一进行学习.介绍. 基本字符的匹配 当我们想查找某列中的字符中是否有

mysql 必知必会总结

以前 mysql 用的不是很多, 2 天看了一遍 mysql 必知必会又复习了一下基础.  200 页的书,很快就能看完, 大部分知识比较基础, 但还是了解了一些以前不知道的知识点.自己做一个备份,随时查看. 命令:sql 不区分大小写,语句大写,列.表名小写是一种习惯连接命令:mysql -u user_name –h example.mysql.alibabalabs.com –P3306 –pxxxxquithelp show; // 查看所有 show 命令show databases;

正则表达式必知必会(修订版)整理教程

正则表达式必知必会(修订版)整理教程 1.   正则表达式入门 1.1  用途:是一种工具,主要用途是搜索变化多端的文本.匹配       到我们想要的信息. 1.2  使用正则表达式:在线测试工具:http://tool.oschina.net/regex/ 2.  匹配单个字符 2.1  匹配纯文本 例子: 文本 Hello,my name is zhaikaishun,please visitmy blog at http://blog.csdn.net/t1dmzks?viewmode=

读MYSQL必知必会的总结

看到了mysql必知必会 总结了以下几个以后很有可能用到的知识点: 1.在检索多列的时候,需要再列名之间用","进行分开,最后的列名后面不加. select id,uid,name from 表名;      select* form 表名 代表检索所有的列 2.在检索指定从第几行开始后的几行 select id from 表名 limit 3,4;第3行开始的后4行,要注意的是检测出来的第一行为0. 3.可以用 order by 语句对检测数来的进行排序,因为数据会受到修改编辑的影响

《mysql必知必会》笔记-部分

<mysql必知必会>笔记-部分 注释: 开始时整理笔记,记录自己看书过程的疑问和重点,后来发现记录没太多意义,还不如直接去翻原书,所以就放弃了. 因此,这个笔记只有一部分,不过依旧分享出来. 1.语言分类: 客户机可以是MySQL提供的工具.脚本语言(如perl).Web应用开发语言(如ASP.ColdFusion.JSP和PHP).程序设计语言(如C.C+kJava)等. 2.之前找不到表的原因: 虽然SQL是不区分大小写的,但有些标识符(如数据库名.表名.列名)可能不同:在MySQL4.

读《MySql必知必会》笔记

MySql必知必会 2017-12-21 意义:记录个人不注意的,或不明确的,或不知道的细节方法技巧,此书250页 登陆: mysql -u root-p -h myserver -P 9999 SHOW STATUS,用于显示广泛的服务器状态信息 DESCRIBE tableName;是SHOW COLUMNS FROM tableName;的一种快捷方式 SHOW CREATE DATABASE和SHOW CREATE TABLE,分别用来显示创建特定数据库或表的MySQL语句 SHOW G

《 MySQL必知必会》笔记_持续更新

< MySQL必知必会> structured querylanguage,MySQL是一个数据库系统管理软件软件,也可以理解为为数据库服务器.读音,my sequel,/?si?kw?l / see kuo 第1.2.3章 schema,提要纲要,column列.row行 数据库:一某种有组织的方式来储存的数据集合 DBMS databasemanegersystem数据库管理系统 table,表,某种特殊类型数据的结构化清单 一个数据中,表名称有唯一性 表的特性,我们用schema[模式]

MySQL必知必会 pdf完整版

需要学习的朋友可以通过网盘下载: http://tadown.com/fs/8yi6be9nsehu9e921/内容简介  · · · · · · <MySQL必知必会>MySQL是世界上最受欢迎的数据库管理系统之一.书中从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用.子查询.正则表达式和基于全文本的搜索.存储过程.游标.触发器.表约束,等等.通过重点突出的章节,条理清晰.系统而扼要地讲述了读者应该掌握的知识,使他们不经意间立刻功力大增. 读者评论: 飞林沙  2013-11

MySQL必知必会1

MySQL必知必会 ? 了解SQL 什么是数据库:数据库(database)保存有阻止的数据的容器,可以把数据库想象成一个文件柜. 什么是表:表(table) 某种特定类型结构的结构化清单,数据库中的表的名字是唯一的. 什么是列:列(column)表中的一个字段.所有表都是有一个或多个列组成的,理解列的最好办法是将数据库表想象为一个网格,网格中每一列存储着一条特定信息.例如,编号,地址,邮政编码. 什么是行:行(row) 表中的数据是按行存储的,所保存的每个记录存储在自己的行内,例如,每一行存储

MySQL必知必会 学习笔记(一)

第一章  了解SQL 模式:   关于数据库和表的布局以及特性的信息.[描述表可以存储什么样的数据,数据如何分解,各部分信息如何命名等等,可以用来描述数据库中特定的表以及整个数据库(和其中表的关系)]. 第二章 MySQL简介 MySQL是一种DBMS,即它是一种数据库软件.基于客户机----服务器的数据库. MySQL工具: 1.mysql 命令行实用程序 2.MySQL Administrator 3.MySQL query Browser 第四章 检索数据 LIMIT 5 表示MySQL返