• mysql必知必会(六):正则表达式过滤


    正则表达式

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

    基本字符匹配

    查询pro_name包含文本1000的所有行

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

    image

    查询prod_name中任意包含000的所有行
    . 是正则表达式中的一个特殊字符

    SELECT prod_name FROM products WHERE prod_name REGEXP '.000' ORDER BY prod_name;
    

    image

    进行OR匹配

    | 表示或的关系
    查询prod_name包含1000或者2000的所有行

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

    image

    匹配几个字符之一

    [] 表示匹配特定的字符,它表示一组字符,匹配任意一个。比如[123],是[1|2|3]的缩写

    查询prod_name包含1 Ton或者2 Ton或者3 Ton的所有行

    SELECT prod_name FROM products WHERE prod_name REGEXP '[123] Ton';
    

    image

    匹配范围

    集合可用来定义要匹配的一个或者多个字符,如匹配数字0到9,可写作[0-9]
    查询prod_name包含1 Ton到5 Ton的所有行

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

    image

    匹配特殊字符

    需要使用\转义
    查询vend_name中包含 . 的字符的所有行

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

    image

    匹配多个实例

    重复元字符

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

    查询出prod_name中包含1 stick和5 sticks的所有行
    \( \) 匹配(),[0-9]匹配任意数字,sticks?匹配stick和sticks,s?表示s可选,出现0次或出现1次

    SELECT prod_name FROM products WHERE prod_name REGEXP '\\([0-9] sticks?\\)' ORDER BY prod_name;
    

    image

    定位符

    定位元字符

    元字符 说明
    ^ 文本的开始
    $ 文本的结尾

    查询以一个数(包括小数点开始的数)的所有产品

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

    image

  • 相关阅读:
    2032 杨辉三角
    2023 求平均成绩
    幸运数
    扑克牌大小
    single-number
    合唱队
    Problem A: 【字符串】最长回文子串
    Problem A: 最大连续子序列
    数串
    02CSS3基本语法05
  • 原文地址:https://www.cnblogs.com/my_captain/p/16458870.html
Copyright © 2020-2023  润新知