2.1: 以特定字串開頭的記錄
2.2: 以特定字串結尾的記錄
2.3: 包含指定字串的記錄
2.4: 以「.」代替字串中的任意乙個字元的記錄
2.5: 匹配包含或者關係的記錄
2.6: 「*」匹配前面字元的任意多次
2.7: "+」匹配前面字元至少一次
2.8: 匹配指定字符集中的任意乙個
mysql 正規表示式通常是在檢索資料庫記錄的時候,根據指定的匹配模式匹配記錄中符合要求的特殊字串。
mysql 的正規表示式使用 regexp 這個關鍵字來指定正規表示式的匹配模式,regexp 操作符所支援的匹配模式
匹配模式
描述例項
^匹配文字的開始字元
『^te』 匹配一te開頭的字串
$匹配文字的結束字元
『xt$』 匹配以xt結尾的字串
.匹配任何單個字元
『t.x』 匹配任何t和x之間有乙個字元的字串
*匹配零個或多個在它面前的字元
『t*t』 匹配t前面有任意個t
+匹配前面的字元1次或者多次
『』字串
匹配包含指定的字串
『te』 匹配含有te的字串
p1|p2
匹配p1或p2
『te|xt』 匹配te或者xt
[…]匹配字元集合中的任意乙個字元
『[abc]』 匹配a或者b或者c
[^…]
匹配不在括號中的任何字元
[^ab] 匹配不包含a或者b的字串
匹配前面的字串n次
『g』 匹配含有2個g的字串
匹配前面的字串至少n次,至多m次
『f』 匹配f最少1次,最多3次
了解正規表示式的匹配規則之後,就可以將這些規則技巧應用於 sql 語句中,從而可以更準確、更快速的查出所需的記錄。
下面通過示例的方式詳細介紹 mysql 正規表示式的使用方法。
2.1: 以特定字串開頭的記錄
mysql>
select id,name,level from player where name regexp '^us'
;+-----+---------+-------+|id
| name | level |
+-----+---------+-------+
| 448 | useless | 1 |
+-----+---------+-------+
1 row in
set(0.00 sec)
2.2: 以特定字串結尾的記錄
mysql>
select id,name,level from player where name regexp 'ss$'
;+-----+---------+-------+|id
| name | level |
+-----+---------+-------+
| 448 | useless | 1 |
| 713 | guess | 25 |
+-----+---------+-------+
2 rows in
set(0.00 sec)
2.3: 包含指定字串的記錄
mysql>
select id,name,level from player where name regexp 'ok'
;+-----+--------+-------+|id
| name | level |
+-----+--------+-------+
| 795 | senoku | 15 |
+-----+--------+-------+
1 row in
set(0.00 sec)
2.4: 以「.」代替字串中的任意乙個字元的記錄
mysql>
select id,name,level from player where name regexp 'shir.ey'
;+------+---------+-------+|id
| name | level |
+------+---------+-------+
| 2460 | shirley | 1 |
+------+---------+-------+
1 row in
set(0.00 sec)
2.5: 匹配包含或者關係的記錄
mysql>
select id,name,level from player where name regexp 'ok|ss'
;+-----+---------+-------+|id
| name | level |
+-----+---------+-------+
| 448 | useless | 1 |
| 713 | guess | 25 |
| 795 | senoku | 15 |
+-----+---------+-------+
3 rows in
set(0.01 sec)
2.6: 「*」匹配前面字元的任意多次
mysql>
select id,name,level from player where name regexp 'oooo*'
;+------+--------+-------+|id
| name | level |
+------+--------+-------+
| 1735 | oooooo | 1 |
| 2718 | ooo | 1 |
+------+--------+-------+
2 rows in
set(0.00 sec)
2.7: "+」匹配前面字元至少一次
mysql>
select id,name,level from player where name regexp 'oooo+'
;+------+--------+-------+|id
| name | level |
+------+--------+-------+
| 1735 | oooooo | 1 |
+------+--------+-------+
1 row in
set(0.00 sec)
2.8: 匹配指定字符集中的任意乙個
mysql>
select id,name,level from player where name regexp '^[d-f]'
;+-----+----------------------+-------+|id
| name | level |
+-----+----------------------+-------+
| 199 | d 丶狙擊王 | 46 |
| 272 | d 丶搶人頭輔助 | 45 |
+-----+----------------------+-------+
2 rows in
set(0.00 sec)
SQL語句與正規表示式
今兒個才知道sql語句還可以搭配正規表示式作為查詢條件,很是有用。regexp like 匹配 regexp instr 包含 regexp replace 替換 regexp substr 提取 表 1 定位元字元 元字元說明 使表示式定位至一行的開頭 使表示式定位至一行的末尾 表 2 量詞或重複...
SQL語句與正規表示式
今兒個才知道sql語句還可以搭配正規表示式作為查詢條件,很是有用。regexp like 匹配 regexp instr 包含 regexp replace 替換 regexp substr 提取 表 1 定位元字元 元字元說明 使表示式定位至一行的開頭 使表示式定位至一行的末尾 表 2 量詞或重複...
SQL語句與正規表示式
今兒個才知道sql語句還可以搭配正規表示式作為查詢條件,很是有用。regexp like 匹配 regexp instr 包含 regexp replace 替換 regexp substr 提取 表 1 定位元字元 元字元說明 使表示式定位至一行的開頭 使表示式定位至一行的末尾 表 2 量詞或重複...