日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL语句之正则表达式

發布時間:2023/12/14 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL语句之正则表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SQL語句之正則表達式

文章目錄

前言

一、正則表達式特殊的字符

二、正則表達式的使用介紹

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}匹配前面的字符串n次‘g{2}’ 匹配含有2個g的字符串
{n,m}匹配前面的字符串至少n次,至多m次‘f{1,3}’ 匹配f最少1次,最多3次

二、正則表達式的使用介紹

了解正則表達式的匹配規則之后,就可以將這些規則技巧應用于 SQL 語句中,從而可以更準確、更快速的查出所需的記錄。
下面通過示例的方式詳細介紹 MySQL 正則表達式的使用方法。

2.1: 以特定字符串開頭的記錄

  • 例如,在player表中查詢以us開頭的name字段并打印對應的id、name 和 level 記錄
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: 以特定字符串結尾的記錄

  • 例如,在 player 表中查詢以 ss 結尾的 name 字段并打印對應的 id、name 和 level 記錄,具體操作如下所示。
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: 包含指定字符串的記錄

  • 例如,在player表中查詢包含ok字符串的name字段并打印對應的 id、name 和 level
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: 以“.”代替字符串中的任意一個字符的記錄

  • 例如,在player表中查詢包含字符串shir 與 ey,且兩個字符串之間只有一個字符的name 字段并打印對應的 id、name 和 level 記錄.
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: 匹配包含或者關系的記錄

  • 例如,在 player 表中查詢包含字符串ok或者ss的name字段并打印對應的 id、name
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: “*”匹配前面字符的任意多次

  • 例如,在 player 表中查詢包含三個或者更多個連續的 o 的 name 字段并打印對應的 id、name 和 level 記錄,具體操作如下所示。
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: "+”匹配前面字符至少一次

  • 例如,在player表中查詢包含四個或者更多個o的 name 字段并打印對應的 id、name
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: 匹配指定字符集中的任意一個

  • 例如,在 player 表中查詢包含以 d、e、f 開頭的 name 字段并打印對應的 id、name 和
    level 記錄,具體操作如下所示。
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语句之正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。