美文网首页MySQL学习MySQL数据
MySQL——用正则表达式进行搜索(六)

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

作者: 开心糖果的夏天 | 来源:发表于2017-06-16 15:06 被阅读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中没有数字)。

    相关文章

      网友评论

        本文标题:MySQL——用正则表达式进行搜索(六)

        本文链接:https://www.haomeiwen.com/subject/waipqxtx.html