正则表达式:
正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较
介绍:
MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定正则表达式,过滤SELECT检索出的数据。(仅支持正则表达式的一个子集)
基本字符匹配
举例:
输入
SELECT * FROM spu ws WHERE code REGEXP '1000'
输出
image.png
分析:除关键字LIKE被REGEXP替代外,这条语句看上去非常像使用LIKE的语句。它告诉MySQL:REGEXP后所跟的东西作为正则表达式(与文字正文1000匹配的一个正则表达式)处理
LIKE和REGEXP之间有一个重要的差别
LIKE匹配整个列。如果被匹配的文本在列值中出现,LIKE将不会找到它,相应的行也不被返回(除非使用通配符)。而REGEXP在列值内进行匹配,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回。这是一个非常重要的差别。
正则表达式 OR匹配 “|”
输入
SELECT * FROM spu ws WHERE code REGEXP '1000|2000'
分析:
语句中使用了正则表达式1000|2000。|为正则表达式的OR操作符。它表示匹配其中之一,因此1000和2000都匹配并返回。
正则表达式 匹配限制范围【EDF】三个字符之一
输入:
SELECT * FROM ware_spu ws WHERE ware_code REGEXP '[FDH]000'
分析:
使用了正则表达式'[FDH]000',[FDH]定义了一组字符,它的意思是匹配F或D或H
[]是另一种形式的OR语句,正则表达式'[FDH],是正则表达式'[F|D|H]的缩写
匹配范围
集合可用来定义要匹配的一个或多个字符。例如,下面的集合将匹配数字0到9【0123456789】
为简化这种类型,可用于 - 来定义一个范围。
【0-9】
范围不限于完整的集合,【1-3】和【6-9】也是合法的范围。【a-z】匹配任意字母字符
输入
SELECT * FROM ware_spu ws WHERE ware_code REGEXP '[A-Z]000'
分析
使用[A-Z] 匹配匹配任意字母字符开头000,
网友评论