SQL語句之正規表示式

2021-10-09 16:11:14 字數 3838 閱讀 6423

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 量詞或重複...