這篇文章主要介紹mysql中正則表達式搜索功能的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)公司長期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為察雅企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站制作,察雅網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。具體如下:
我們知道正則表達式是描述搜索模式的特殊字符串。 它是一個強大的工具,為我們提供一種簡潔靈活的方法來識別基于模式的文本字符,例如字符,單詞等。例如,我們可以使用正則表達式來搜索電子郵件,IP地址,電話號碼,社會安全號碼或具有特定模式的任何內(nèi)容。正則表達式可以由正則表達式處理器解釋的自己的語法,正則表達式廣泛應(yīng)用于從編程語言到數(shù)據(jù)庫(包括MySQL)大部分平臺。使用正則表達式的優(yōu)點是,不限于在like運算符中基于具有百分號(%)和下劃線(_)的固定模式搜索字符串。 使用正則表達式,有更多的元字符來構(gòu)造靈活的模式。
了解了這些我們是不是想要來試試水呢???廢話不多說,MySQL允許使用REGEXP運算符在SQL語句中匹配模式,所以,我們來看下,正則再where子句中的語法格式:
SELECT column_list FROM table_name WHERE string_column REGEXP pattern;
這條sql中執(zhí)行string_column與模式pattern匹配,如果string_column中的值與模式pattern匹配,則WHERE子句中的表達式將返回1,否則返回0。如果string_column或pattern為NULL,則結(jié)果為NULL。除了REGEXP運算符之外,可以使用RLIKE運算符,這是REGEXP運算符的同義詞。其中,REGEXP運算符的否定形式是NOT REGEXP。
完事我們來看個實例哈,假設(shè)想找出名字以字母A,B或C開頭的產(chǎn)品??梢允褂胹elect語句中的正則表達式如下:
SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;
執(zhí)行上面查詢語句,得到以下結(jié)果:
+--------------------------------+ | productname | +--------------------------------+ | America West Airlines B757-200 | | American Airlines: B767-300 | | American Airlines: MD-11S | | ATA: B757-300 | | Boeing X-32A JSF | | Collectable Wooden Train | | Corsair F4U ( Bird Cage) | +--------------------------------+ 7 rows in set
該模式允許查詢名稱以A,B或C開頭的產(chǎn)品,其中字符^表示從字符串的開頭匹配,完事字符|如果無法匹配,則搜索替代方法。下表說明了正則表達式中一些常用的元字符和構(gòu)造:
元字符 | 行為 |
---|---|
^ | 匹配搜索字符串開頭處的位置 |
$ | 匹配搜索字符串末尾的位置 |
. | 匹配任何單個字符 |
[…] | 匹配方括號內(nèi)的任何字符 |
[^…] | 匹配方括號內(nèi)未指定的任何字符 |
![]() | 匹配p1或p2模式 |
* | 匹配前面的字符零次或多次 |
+ | 匹配前一個字符一次或多次 |
{n} | 匹配前幾個字符的n個實例 |
{m,n} | 從m到n個前一個字符的實例匹配 |
我們再來查找名稱以a開頭的產(chǎn)品,我們在名稱開頭使用“^”進行匹配,如下查詢語句:
SELECT productname FROM products WHERE productname REGEXP '^a';
執(zhí)行上面查詢語句,得到以下結(jié)果:
+--------------------------------+ | productname | +--------------------------------+ | American Airlines: B767-300 | | America West Airlines B757-200 | | ATA: B757-300 | | American Airlines: MD-11S | +--------------------------------+ 4 rows in set
如果要使REGEXP運算符以區(qū)分大小寫的方式比較字符串,可以使用BINARY運算符將字符串轉(zhuǎn)換為二進制字符串。因為MySQL比較二進制字節(jié)逐字節(jié)而不是逐字符。 這允許字符串比較區(qū)分大小寫。例如,以下語句只匹配開頭為大寫“C”的產(chǎn)品名稱:
SELECT productname FROM products WHERE productname REGEXP BINARY '^C';
執(zhí)行上面查詢語句,得到以下結(jié)果:
+--------------------------+ | productname | +--------------------------+ | Collectable Wooden Train | | Corsair F4U ( Bird Cage) | +--------------------------+ 2 rows in set
要找到以f結(jié)尾的產(chǎn)品,我們可以使用'$f‘來匹配字符串的末尾:
SELECT productname FROM products WHERE productname REGEXP 'f$';
執(zhí)行上面查詢語句,得到以下結(jié)果:
+------------------+ | productname | +------------------+ | Boeing X-32A JSF | +------------------+ 1 row in set
要查找其名稱包含“ford”的產(chǎn)品,就要使用以下查詢:
SELECT productname FROM products WHERE productname REGEXP 'ford';
執(zhí)行上面查詢語句,得到以下結(jié)果:
+----------------------------------+ | productname | +----------------------------------+ | 1968 Ford Mustang | | 1969 Ford Falcon | | 1940 Ford Pickup Truck | | 1911 Ford Town Car | | 1932 Model A Ford J-Coupe | | 1926 Ford Fire Engine | | 1913 Ford Model T Speedster | | 1934 Ford V8 Coupe | | 1903 Ford Model A | | 1976 Ford Gran Torino | | 1940s Ford truck | | 1957 Ford Thunderbird | | 1912 Ford Model T Delivery Wagon | | 1940 Ford Delivery Sedan | | 1928 Ford Phaeton Deluxe | +----------------------------------+ 15 rows in set
要查找名稱只包含10個字符的產(chǎn)品,可以使用'^‘和'$‘來匹配產(chǎn)品名稱的開頭和結(jié)尾,并重復(fù){10}次任何字符.,作為以下查詢:
SELECT productname FROM products WHERE productname REGEXP '^.{10}$';
執(zhí)行上面查詢語句,得到以下結(jié)果:
+-------------+ | productname | +-------------+ | HMS Bounty | | Pont Yacht | +-------------+ 2 rows in set
其實吧,這個查詢方式是固定的,可變的是你寫的正則,所以具體咋用,就要看各位小伙伴的能力了哦。
以上是“mysql中正則表達式搜索功能的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
文章名稱:mysql中正則表達式搜索功能的示例分析-創(chuàng)新互聯(lián)
路徑分享:http://www.rwnh.cn/article44/cshhee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、定制開發(fā)、微信公眾號、全網(wǎng)營銷推廣、面包屑導(dǎo)航、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容