如果想要了解完整的MySQL手册, 请访问: MySQL 5.1参考手册

你还可以学习: MySQL学习精粹

我们知道,在SQL之中,可以用 like 这个谓词(表达式) 来进行模糊检索,并支持 %,?,_等占位符.

但是,这个模糊检索的功能有很多限制,简单来说就是太模糊了。
在MySQL中提供了 REGEXP 关键字来支持正则表达式,当然,只是一些很简单的正则啦。
首先,我们构造一些测试数据。

-- 建表
USE test;
DROP TABLE IF EXISTS t_regcustomer;
CREATE TABLE t_regcustomer (
	id INT(10) AUTO_INCREMENT
	,name VARCHAR(256)
	,age INT(10)
	, PRIMARY KEY(id)
) COLLATE='utf8_general_ci' ENGINE=InnoDB;

增加一些测试数据:

-- 插入一些测试数据:
TRUNCATE TABLE t_regcustomer;
INSERT INTO t_regcustomer(name, age) VALUES ('王明',20);
INSERT INTO t_regcustomer(name, age) VALUES ('王大',21);
INSERT INTO t_regcustomer(name, age) VALUES ('小王',22);
INSERT INTO t_regcustomer(name, age) VALUES ('小王2',22);
INSERT INTO t_regcustomer(name, age) VALUES ('敲不死',23);
INSERT INTO t_regcustomer(name, age) VALUES ('憨憨',24);
INSERT INTO t_regcustomer(name, age) VALUES ('憨憨2',24);
INSERT INTO t_regcustomer(name, age) VALUES ('郭靖名',25);
INSERT INTO t_regcustomer(name, age) VALUES ('郭靖2',25);
INSERT INTO t_regcustomer(name, age) VALUES ('郭靖3',25);
INSERT INTO t_regcustomer(name, age) VALUES
('郭得缸',25)
,('大鹏',20)
,('大鹏2',20)
,('大鹏3',20)
,('二鹏',19)
,('鹏鹏',18)
,('鹏鹏1',18)
,('小鹏',17)
,('AAA',17)
,('aaa',17)
,('SS',17)
,('s2',17)
,('ss',17)
;

1. 最简单的查询:

SELECT *
FROM t_regcustomer;

2. 指定列名查询

SELECT c.id, c.name, c.age
FROM t_regcustomer c
;

3. 对查询结果排序

SELECT c.id, c.name, c.age
FROM t_regcustomer c
ORDER BY c.age ASC
;

4. like 模糊检索
%匹配任意数量(0~n)的任意字符

SELECT c.id, c.name, c.age
FROM t_regcustomer c
WHERE c.name LIKE '%鹏%'
ORDER BY c.age ASC
;

5. regexp 关键字
.匹配任意一个字符
注意此处因为没有起始(^)和结束($)限定符,所以只要列中出现的行都会被检索出来.

SELECT c.id, c.name, c.age
FROM t_regcustomer c
WHERE c.name REGEXP '.鹏.'
ORDER BY c.age ASC
;

6. 正则起始限定符

SELECT c.id, c.name, c.age
FROM t_regcustomer c
WHERE c.name REGEXP '^王'
ORDER BY c.age ASC
;

7. 大小写敏感

SELECT c.id, c.name, c.age
FROM t_regcustomer c
WHERE c.name REGEXP BINARY '^s'
ORDER BY c.age ASC
;

8. 正则或运算

SELECT c.id, c.name, c.age
FROM t_regcustomer c
WHERE c.name REGEXP BINARY 'a|s'
ORDER BY c.name ASC
;

9. 组运算正则
[123] 表示 1、2、3这3个数字之一出现即可

SELECT c.id, c.name, c.age
FROM t_regcustomer c
WHERE c.name REGEXP BINARY '鹏[123]'
ORDER BY c.name ASC
;

[1-9] 匹配 1、2、3、.... 8、9

SELECT c.id, c.name, c.age
FROM t_regcustomer c
WHERE c.name REGEXP BINARY '鹏[1-9]'
ORDER BY c.name ASC
;

10. 转义
使用 \\ 
可以转义 \.[]()?-| 以及分页,换行符号等

11.更多内容

请查阅 《MySQL必知必会》 68页 正则表达式

MySQL正则表达式初步的更多相关文章

  1. MySql 正则表达式简介及使用

    MySql正则表达式简介及使用 by:授客 QQ:1033553122 简介 正则表达式描述了一组字符串,该字符放置于REGEXP工具后面.作用是将一个正则表达式与一个文本串进行比较. 最简单的正则表 ...

  2. 二十二、MySQL 正则表达式

    MySQL 正则表达式 在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配. MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正 ...

  3. mysql正则表达式及应用

    mysql where子句的模式匹配 今天在应用中遇到了这样的一个问题,有一个字段 t1,其中的值类似于:1,1,1,2,3,3,4,4,5,5,2,4,3,2,1,2 需要从里面搜索出比如说:第一个 ...

  4. DB-MySQL:MySQL 正则表达式

    ylbtech-DB-MySQL:MySQL 正则表达式 1.返回顶部 1. MySQL 正则表达式 在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配. MySQL 同 ...

  5. 【数据库开发】在Windows上利用C++开发MySQL的初步

    [数据库开发]在Windows上利用C++开发MySQL的初步 标签(空格分隔): [编程开发] Windows上在上面配置环境的基础上开展一个小demo链接数据库,没想到中间也出现了这么多的问题,简 ...

  6. MySQL正则表达式

    正则表达式作用是匹配方本,将一个模式(正则表达式)与一个文本串进行比较. MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据. MySQL仅支持 ...

  7. 使用MySQL正则表达式查询

    MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据. REGEXP后所跟的东西作为正则表达式处理. 代码 SELECT prod_name FR ...

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

    正则表达式作用是匹配方本,将一个模式(正则表达式)与一个文本串进行比较. MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据. MySQL仅支持 ...

  9. MySQL 正则表达式

    介绍 正则表达式用来描述或者匹配符合规则的字符串.它的用法和like比较相似,但是它又比like更强大,能够实现一些很特殊的规则匹配:正则表达式需要使用REGEXP命令,匹配上返回"1&qu ...

随机推荐

  1. OpenResty和Resis一些基本的性能配置

    Basics: 1. Ensure that you have not disabled Lua code cache: https://github.com/openresty/lua-nginx- ...

  2. [ExtJS6学习笔记]Ext JS6主题系列 (Classic工具包)

    本文作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/50186709 翻译来源:http://docs.sencha.co ...

  3. DoesNotExist at /account/

    DoesNotExist at /account/ User has no account. Request Method: GET Request URL: http://127.0.0.1:800 ...

  4. 27 自定义View 和案例

    有时安卓提供的View不满足我们的需求时可以创建一个类继承View或其子类重写方法 如 package com.qf.sxy.day28_customview.view; import android ...

  5. static 变量(静态变量)

    在C++的面向对象编程中,static还可以加在类的数据成员或成员函数之前.这样定义的数据成员或成员函数就被类所拥有,而不再属于类的对象. #include <iostream> usin ...

  6. [端口扫描]S扫描器跨网段扫描

    最近看了下端口扫描,用了几款扫描器,nmap啊,x-sacn等.之前很少关注安全方面的东西,所以也比较菜. 其中有一款叫做 "S扫描器"的,扫描速度非常快,可以大网段的扫描,几十万 ...

  7. ActiveMQ安装配置及实例

    本文可作为吴水成老师,dubbo课程第21节的学习笔记. ActiveMQ的介绍及功能 参考百度 ActiveMQ的下载 https://activemq.apache.org/activemq-51 ...

  8. Ubuntu下配置Telnet服务器

    1. 首先介绍linux中的守护进程 在Linux系统中有一个特殊的守护进程inetd(InterNET services Daemon),它用于Internet标准服务,通常在系统启动时启动.通过命 ...

  9. PullToRefreshScrollView 嵌套RecyclerView实现特卖列表倒计时抢购

    不久之前,我们谈到了通过Handler与timer及TimerTask结合实现倒计时抢购列表,那个是PullToRefreshListView实现的,今天要讲的是PullToRefreshScroll ...

  10. 【编程练习】poj1068

    Parencodings Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24202   Accepted: 14201 De ...