Mysql第九章 - 用通配符进行过滤

2024-04-17  本文已影响0人  足__迹
正则表达式:

正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较

介绍:

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,

上一篇下一篇

猜你喜欢

热点阅读