mysql 正規表示式區間 MySQL 正規表示式

2021-10-18 08:26:54 字數 1982 閱讀 2461

概述

前面的一講我們已經了解到mysql可以通過 like ...% 來進行模糊匹配,mysql 同樣也支援其他正規表示式的匹配, mysql中使用 regexp 操作符來進行正規表示式匹配。

例項基本字元匹配

select employee_name from yw_employee where employee_name regexp '王'

該語句檢索列employee_name包含文字王的所有行

select employee_name from yw_employee where employee_name regexp '.張'

該語句中的正規表示式(.),是正規表示式語言中的乙個特殊字元,表示匹配任意乙個字元(該語句也可以使用like和萬用字元完成)

like和regexp的區別:

like匹配整個列

select employee_name from yw_employee where employee_name like '王'

該sql語句將不返回資料,因為like匹配整個列,如果被匹配的文字在列值**現,like將不會找到它,相應的行也不會被返回(除非使用萬用字元%)

regexp在列值內進行匹配

select employee_name from yw_employee where employee_name regexp '王'

該sql語句會返回一行資料,如果被匹配的文字在列值**現,regexp將會找到它,相應的行將被返回(如果希望regexp匹配整個列值,使用^和$定位符)即可

進行or匹配

select employee_name from yw_employee where employee_name regexp '王|李'

or表示匹配其中之一,功能與select語句中的or語句,多個or條件可併入單個正規表示式

匹配幾個字元之一

select employee_name from yw_employee where employee_name regexp '[薛]占國'

是另一種形式的or語句,作用是匹配指定的(其中之一)字元;正規表示式[薛佔]國為[薛|佔|]國的縮寫,它的意思是匹配薛或者佔字元集合也可以被否定,即匹配除指定字元外的任何東西,為否定乙個字符集,可以在集合開始處設定乙個『^』例如[^薛佔](定義更準確,|如果不括起來,則應用於整個串)

匹配範圍

集合可以用來定義要匹配的乙個或多個字元

比如[010203040506070809],為了簡化這種型別的集合,可使用(-)來定義乙個範圍,即[0-9];(範圍不僅僅侷限於數值,還可以使字母字元等)

匹配特殊字元

正規表示式由具有特定含義的特殊字元構成;如果要匹配這些特殊字元,就需要用\\為前導;\\-表示查詢-,\\.表示查詢.。

select employee_name from yw_employee where employee_name regexp '\\薛'

這種處理方式就是所謂的轉義(escaping),正規表示式內具有特殊意義的所有字元都必須以這種方式轉義;(為了匹配反斜槓字元本身,需要使用\\\)

例:多數正規表示式實現使用單個反斜槓轉義特殊字元,以便能夠使用這些字元本身,而mysql要求兩個反斜槓(mysql自己解釋乙個,正規表示式庫解釋乙個)  \\也用來引用元字元(具有特殊含義的字元),如下:

匹配字元類

字元類(character class):有時候需要檢索出我們需要的數字、所有字母字元或所有數字字母字元等的匹配,我們可以使用預定義的字符集,稱為字元類;如下:

匹配多個例項

有時候需要對匹配的數目進行更強的控制,比如:尋找所有的數,不管數中包含多少數字,或尋找乙個單詞並尾隨乙個s(如果存在)等情況,我們可以利用正規表示式中的重複元字元來完成;如下

定位符有時候為了匹配特定位置的文字,需要使用定位符,常用定位符列表如下:

以上就是mysql正規表示式相關的知識,

mysql正規表示式 MySQL正規表示式

正規表示式是為複雜搜尋指定模式的強大方式。正規表示式描述了一組字串。最簡單的正規表示式是不含任何特殊字元的正規表示式。例如,正規表示式hello匹配hello。非平凡的正規表示式採用了特殊的特定結構,從而使得它們能夠與1個以上的字串匹配。例如,正規表示式hello word匹配字串hello或字串w...

mysql 正規表示式

已知mysql可以通過 like 來進行模糊匹配。mysql 同樣也支援其他正規表示式的匹配,mysql中使用 regexp 操作符來進行正規表示式匹配。例項 查詢name欄位中以 st 為開頭的所有資料 mysql select name from person tbl where name re...

MySQL正規表示式

在前面我們已經看到了mysql的模式匹配 like mysql支援另一種型別的模式匹配的操作基於正規表示式和正規表示式運算子。如果知道php或perl,那麼它是非常簡單的,因為這匹配非常相似於指令碼正規表示式。以下是模式的 其可以連同regexp運算子使用。模式什麼樣的模式匹配 開始的乙個字串 結束...