首頁  >  文章  >  資料庫  >  mysql中用正規表示式進行搜尋匹配教學(二)

mysql中用正規表示式進行搜尋匹配教學(二)

巴扎黑
巴扎黑原創
2017-05-04 17:28:281923瀏覽

進行or匹配

為搜尋兩個串之一(或為這個串,或為另一個串),使用|,如下所示:

輸入:

select prod_name from products where prod_name regexp '1000|2000' order by prod_name;

輸出:

mysql中用正規表示式進行搜尋匹配教學(二)

分析:語句中使用了正規表示式1000|2000。 |為正規表示式的or操作符。它表示匹配其中之一,因此1000和2000都匹配並返回。

使用|從功能上類似select語句使用or語句,多個or條件可併入單一正規表示式。

注意:可以給出兩個以上的or條件。例如'1000|2000|3000'將匹配1000或2000或3000.

匹配幾個字元之一

##以匹配任何單一字元。但是,如果你只想匹配特定的字符,怎麼辦?

可以透過制定一組用[和]括起來的字元來完成,如下所示:

輸入:select prod_name from products where prod_name regexp '[123] Ton' order by prod_name ;

輸出:

mysql中用正規表示式進行搜尋匹配教學(二)

#分析:這裡,使用了正規表示式[123]Ton。 [123]定義一組字符,它的意思是匹配1或2或3,因此,1ton和2ton都是匹配且返回(沒有3ton)。

如所見,[]是另一種形式的or語句。事實上,正規表示式[123]Ton為[1|2|3]Ton的縮寫,也可以使用後者。但是,需要用[]來定義or語句在找什麼。為更好地理解這一點,請看下面的例子:

輸入:

select prod_name from products where prod_name regexp '1|2|3 Ton‘ order by prod_name;

#輸出:

mysql中用正規表示式進行搜尋匹配教學(二)##分析:這並不是期望的輸出。兩個要求的行被檢索出來,但還檢索出了另外三行,之所以這樣是由於MySQL假定你的意思是‘1’或‘2’或‘3ton’。除非把字元|擴在一個集合中,否則它將應用於整個串。

字元集合也可以被否定,即,它們將匹配指定字元以外的任何東西。為否定一個字元集,在集合的開始處放置一個^即可。因此,儘管[123]匹配字元1、2或3,但[^123]卻匹配除這些字元外的任何東西。


#匹配範圍

#集合可用來定義要匹配的一個或多個字元。例如,線面的集合講匹配數字0到9:

[123456789]

為簡化這種類型的集合,可以使用-來定義一個範圍。下面的式子功能上等同於上述數字列表:

[0-9]

範圍不限於完整的集合,[1-3]和[6-9]也是合法的範圍。此外,範圍不一定只是數值的,[a-z]符合任意字母字元。

舉例:

#輸入:

select prod_name from products where prod_name regexp '[1-5] Ton’ order by prod_name;

輸出:

mysql中用正規表示式進行搜尋匹配教學(二)分析:這裡使用正規表示式[ 1-5]Ton。 [1-5]定義了一個範圍,這個表達式意思是符合1到5,因此回傳3個符合行。由於5ton匹配所以返回.5 ton。

【相關推薦】

1. 

mysql中用正規表示式進行搜尋比對教學(一)

2. 

MySQL免費線上影片教學

3. 

韓順平2016年最新MySQL基礎影片教學

4.m

ysql中用正規表示式進行搜尋比對教學(三)

以上是mysql中用正規表示式進行搜尋匹配教學(二)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn