正則表達式:
正則表達式的作用是匹配文本,將一個模式(正則表達式)與一個文本串進行比較
介紹:
MySQL用WHERE子句對正則表達式提供了初步的支持,允許你指定正則表達式,過濾SELECT檢索出的數據。(僅支持正則表達式的一個子集)
基本字符匹配
舉例:
輸入
SELECT * FROM spu ws WHERE code REGEXP '1000'
輸出
分析:除關鍵字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,