SQL中的字符串正則表達(dá)式常見示例代碼
正則表達(dá)式的基本概念
所謂正則表達(dá)式(Regular Expression,簡稱regex或regexp)是一種用于匹配字符串中字符組合的模式描述工具。它通過一系列特殊的字符和符號來定義一種約定俗成的規(guī)則,用于查找、匹配、替換或驗(yàn)證字符串中的特定內(nèi)容。在表單提交驗(yàn)證、路由映射、文本處理等方面大放異彩,基本上所有編程語言都有特定的一套正則機(jī)制以供程序員使用。
正則表達(dá)式的基礎(chǔ)字符
正則表達(dá)式由普通字符和特殊符號組成,一共可以分為兩種大類。首先是元字符,由特殊符號組成,代表的是正則匹配中的匹配準(zhǔn)則。轉(zhuǎn)義字符通常由特殊符號\+字符組成,是某種字符表達(dá)類型的統(tǒng)稱,當(dāng)匹配內(nèi)容中本身帶有\時,需要再添加一個轉(zhuǎn)義,例如\\。
元字符
.:匹配任意一個字符(除了換行符)。*:匹配零次或多次的字符或子模式。+:匹配一次或多次的字符或子模式。?:匹配零次或一次的字符或子模式。{n}:匹配重復(fù)n次的字符或子模式。{n,}:匹配重復(fù)≥n次的字符或子模式。{n,m}:匹配重復(fù)n到m次的字符或子模式。[]:匹配方括號內(nèi)的任意一個字符。[^]:匹配不在方括號內(nèi)的任意一個字符。^:表示匹配字符串以…開頭。$:表示匹配字符串以…結(jié)尾。():分組,用于拆解匹配的內(nèi)容。|:邏輯或,表示匹配多種模式中的任意一個。-:當(dāng)其不在[]內(nèi)則就代表字符-,在[]內(nèi)表示范圍,例如[a-z]表示任意小寫字符。
轉(zhuǎn)義字符
\d:匹配任意數(shù)字字符(0-9)。\w:匹配任意字母或數(shù)字或下劃線字符(等價于[a-zA-Z0-9_])。\s:匹配任意空白字符(空格、制表符、換行符等)。\b:匹配單詞的開始與結(jié)束,例如\bword\b可以匹配字符串中的整個單詞word,而不會混淆其他包含word的內(nèi)容。\D:匹配任意非數(shù)字字符。\W:匹配任意非字母、數(shù)字、下劃線字符(等價于[^a-zA-Z0-9_])。\S:匹配任意非空白字符。
常見的正則示例
- 匹配電子郵件地址
 
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b
解釋:匹配以字母、數(shù)字、點(diǎn)號、下劃線等開頭(可出現(xiàn)一次或多次),后跟@,再跟轉(zhuǎn)義的.,最后以域名和頂級域名(字母且至少有兩個字符)結(jié)尾。
- 匹配日期
 
\d{4}-\d{2}-\d{2}
解釋:YYYY-MM-DD,匹配四個數(shù)字,跟-,后跟兩個數(shù)字,再跟-,最后又是兩個數(shù)字。
- 匹配手機(jī)號碼
 
^1[3-9]\d{9}$
解釋:以1開頭,第二位是3到9之間的數(shù)字,后面跟著九位數(shù)字結(jié)尾。
- 匹配網(wǎng)頁元素
 
<[^>]+>(.*)</[^>]+>
解釋:<xxx>…</xxx>。
SQL中應(yīng)用正則表達(dá)式
字符串查找
在SQL中若要應(yīng)用正則表達(dá)式完成字符串查找功能,篩選出滿足條件的記錄時:
SELECT * FROM 表名 WHERE 字符串字段 REGEXP '正則表達(dá)式';
注意:僅字符串字段支持使用REGEXP+正則語句進(jìn)行查找功能。
字符串替換
在SQL中若要應(yīng)用正則表達(dá)式完成字符串替換功能時:
SELECT regexp_replace(str, pattern, replace_str, occurrence) FROM 表名;
其中:
str:表示需要應(yīng)用正則替換的字符串表達(dá);pattern:表示正則表達(dá)式,需要帶上英文引號;replace_str:表示當(dāng)匹配到樣式后需要將其替換的新字符串表達(dá);occurrence:取值為整型常量,表示替換的程度,該值取0時替換掉所有滿足正則條件的匹配子串,大于0時表示將第幾個滿足正則條件的匹配子串替換。
常見案例
例題: 查找有效郵箱的用戶
一個有效的電子郵件具有前綴名稱和域,其中:
- 前綴名稱是一個字符串,可以包含字母(大寫或小寫),數(shù)字,下劃線 
_,點(diǎn).和/或破折號-; - 前綴名稱必須以字母開頭;
 - 域名稱為
@leetcode.com。 
代碼:
SELECT user_id, name, mail FROM Users WHERE mail REGEXP '^[a-zA-Z][a-zA-Z0-9_.-]*\\@leetcode\\.com$';
總結(jié)
到此這篇關(guān)于SQL中字符串正則表達(dá)式常見示例代碼的文章就介紹到這了,更多相關(guān)SQL字符串正則表達(dá)式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
 SQL Server 2012 安裝圖解教程(附sql2012下載地址)
在安裝微軟最新數(shù)據(jù)庫SQL Server 2012之前,編者先確定一下安裝環(huán)境:Windonws 7 SP1,32位操作系統(tǒng)、CPU是2.1GHz賽揚(yáng)雙核T3500,內(nèi)存2.93GB2013-04-04
 sqlserver禁止management studio的自動提交事務(wù)
默認(rèn)management studio是自動提交事務(wù),即一個語句就一個事務(wù),那么如何禁止其自動提交呢?下面有個不錯的方法,大家可以參考下2014-06-06

