@author: Tobin @date: 2019/10/28 19:51:40git
MySQL仅支持多数正则表达式实现的一个很小的子集。正则表达式
# 检索列prod_name包含文本1000的全部行 SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod_name; # 这里注意和LIKE的差异。LIKE匹配'1000'是全匹配。必须等于1000才返回值。而REGEXP是只要包含1000就能够。 # 匹配任意一个字符 SELECT prod_name FROM products WHERE prod_name REGEXP '.000' ORDER BY prod_name; # MySQL中的正则表达式匹配,自版本3.32.4后不区分大小写。大写和小写都匹配。为区分大小写,能够使用BINARY关键字。 # 如 WHERE prod_name REGEXP BINARY 'JetPack .000' # 进行OR匹配,使用'|' SELECT prod_name FROM products WHERE prod_name REGEXP '1000|2000' ORDER BY prod_name; # 匹配几个字符之一 # 至关于另外一种形式的|,'[1|2|3] Ton'加括号,不然匹配1,2,3 Ton中的一个 # [^123]表示不匹配其中的任意一个字符 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-5] Ton' ORDER BY prod_name; # 转义\\ # \\f 换页 \\n 换行 \\r 回车 \\t 制表 \\v 纵向制表 \\\匹配反斜杠自己 SELECT prod_name FROM products WHERE prod_name REGEXP '\\.' ORDER BY prod_name; # 匹配字符类 # 举例。好比[:alnum:] 任意字符和数字,[:alpha:]任意字符 # 匹配多个实例 # * 0个或者多个匹配 # + 1个或者多个匹配 # ? 0个或者1个匹配 # {n} 指定数目的匹配 # {n,} 很多于指定数目的匹配 # {n,m} 匹配数目的范围 (m不超过255) SELECT prod_name FROM products WHERE prod_name REGEXP '\\([0-9] sticks?\\)' ORDER BY prod_name; # 匹配连在一块儿的任意4位数字 SELECT prod_name FROM products WHERE prod_name REGEXP '[[:digit:]]{4}' ORDER BY prod_name; # 定位符 # ^ 文本的开始 $ 文本的结尾 [[:<:]] 词的开始 [[:>:]]词的结尾 SELECT prod_name FROM products WHERE prod_name REGEXP '^[0-9\\.]' ORDER BY prod_name; # ^在括号内是否认该集合,在外面就是定位符 # 用^开头,$结尾能够使得REGEXP等价于LIKE