MySQL学习MySQL数据

MySQL——用正则表达式进行搜索(六)

2017-06-16  本文已影响110人  开心糖果的夏天

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。

一、基本字符匹配

SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod_name;

在数据库example中建立表products ,如下:



此语句的输出如下图所示:


二、进行OR匹配

SELECT prod_name FROM products WHERE prod_name REGEXP '1000|2000' ORDER BY prod_name;

此语句的输出如下图所示:

三、匹配几个字符之一

可通过指定一组用[和]括起来的字符来完成。

SELECT prod_name FROM products WHERE prod_name REGEXP '[123] Ton' ORDER BY prod_name;
SELECT prod_name FROM products WHERE prod_name REGEXP '[1|2|3] Ton' ORDER BY prod_name;

此语句的输出如下图所示:



这里使用了正则表达式[123] Ton。[123]定义一组字符,它的意思是匹配1或2或3。

四、匹配范围

集合可用来定义要匹配的一个或多个字符。例如,下面的集合将匹配数字0-9:[0123456789]。可以简化为[0-9]。范围不限于完整的集合,[1-3]和[6-9]也是合法的范围。此外,范围不一定只是数值的,[a-z]匹配任意字母字符。

SELECT prod_name FROM products WHERE prod_name REGEXP '[1-5] Ton' ORDER BY prod_name;

此语句的输出如下图所示:


五、匹配特殊字符

为了匹配特殊字符,必须用\为前导。\-表示查找-,\.表示查找.。

SELECT vend_name FROM vendors WHERE vend_name REGEXP '\\.' ORDER BY vend_name;

此语句的输出如下图所示:


六、定位符

如果想找出以一个数(包括以小数点开始的数)开始的产品,怎么办??解决办法就是用^定位符,如下所示:

SELECT prod_name FROM products WHERE prod_name REGEXP '^[0-9\\.]' ORDER BY prod_name;

此语句的输出如下图所示:

七、简单的正则表达式的测试

可以在不使用数据库表的情况下用SELECT来检测正则表达式。REGEXP检查总是返回0(没有匹配)或1(匹配)。可以用带文字串的REGEXP来测试表达式,并试验它们。相应的语法如下:

SELECT  'hello' REGEXP '[0-9]';

这个例子显然将返回0(因为hello中没有数字)。

上一篇下一篇

猜你喜欢

热点阅读