zoukankan      html  css  js  c++  java
  • MySQL 正则表达式

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

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

    基本字符匹配

    SELECT * FROM `products` where prod_name REGEXP '1000'; -- JetPack 1000
    SELECT * FROM `products` where prod_name REGEXP '.000'; -- JetPack 1000 和 jetPack 2000
    -- BINARY 区分大小写
    SELECT * FROM `products` where prod_name REGEXP BINARY 'JetPack .000';-- JetPack 1000

    进行OR匹配

    SELECT * FROM `products` where prod_name REGEXP '1000|2000';-- JetPack 1000 和 jetPack 2000

    可以给出两个以上的OR条件。例如,'1000 | 2000 | 3000’将匹配1000或2000或3000。

    匹配几个字符之一

    如果想匹配多个特定字符之一,可通过指定一组用[和]括起来的字符来完成

    SELECT * FROM `products` where prod_name REGEXP '[123] Ton';-- 1 ton anvil 和 2 ton anvil

    字符集合也可以被否定,即,它们将匹配除指定字符外的任何东西。为否定一个字符集,在集合的开始处放置一个^即可。因此,[123]匹配字符1、2或3,[^123]匹配除这些字符外的任何东西。

    匹配范围

    集合可用来定义要匹配的一个或多个字符。例如,下面的集合将匹配数字0到9:[0123456789]

    为简化这种类型的集合,可使用-来定义一个范围。下面的式子功能上等同于上述数字列表:[0-9]

    范围不限于完整的集合,[1-3]和[6-9]也是合法的范围。此外,范围不一定只是数值的,[a-z]匹配任意字母字符。

    匹配特殊字符

    使用转义匹配特殊字符。包括.、|、[]

    SELECT * FROM `products` where prod_name REGEXP '\.'; -- .5 ton anvil

    为了匹配反斜杠()字符本身,需要使用\。

    或\? 多数正则表达式实现使用单个反斜杠转义特殊字符,以便能使用这些字符本身。但MySQL要求两个反斜杠(MySQL自己解释一个,正则表达式库解释另一个)。

    匹配字符类

    可以使用预定义的字符集,称为字符类

    匹配多个实例

    SELECT * FROM `products` where prod_name REGEXP '\([0-9] sticks?\)';-- TNT (1 stick) 和 TNT (5 sticks)
    SELECT * FROM `products` where prod_name REGEXP '[[:digit:]]{4}';-- JetPack 1000 和 jetPack 2000

    定位符

    SELECT * FROM `products` where prod_name REGEXP '^[0-9\.]';-- .5 ton anvil 和 1 ton anvil 和 2 ton anvil

    ^有两种用法。在集合中(用[和]定义),用它来否定该集合,否则,用来指串的开始处。

    LIKE和REGEXP的不同在于,LIKE匹配整个串而REGEXP匹配子串。利用定位符,通过用^开始每个表达式,用$结束每个表达式,可以使REGEXP的作用与LIKE一样。

    文章来源:MySQL必知必会-第9章 用正则表达式进行搜索

  • 相关阅读:
    [比赛|考试]9.21上午考试
    给花_Q
    [比赛|考试] 9.17下午考试
    [比赛|考试]nowcoder NOIP提高组组第二场
    图论
    生成函数
    P4197 Peaks
    3942: [Usaco2015 Feb]Censoring
    P2245 星际导航
    P3565 [POI2014]HOT-Hotels
  • 原文地址:https://www.cnblogs.com/ooo0/p/14189871.html
Copyright © 2011-2022 走看看