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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL——正则表达式

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

正則表達式的基本概念

正則表達式,又稱規(guī)則表達式是計算機科學(xué)的一個概念。

(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE)

正則表達式是對字符串(包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為“元字符”))操作的一種邏輯公式,

就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規(guī)則字符串”,這個“規(guī)則字符串”用來表達對字符串的一種過濾邏輯。

正則表達式是一種文本模式,該模式描述在搜索文本時要匹配的一個或多個字符串。

正則表達式通常被用來檢索、替換那些符合某個模式(規(guī)則)的文本。

許多程序設(shè)計語言都支持利用正則表達式進行字符串操作。

顧名思義,就是一個有規(guī)則的表達式,按照這個規(guī)則的表達式去搜索匹配這個規(guī)則的字符串。

如AXXX;BXXX;這種規(guī)則表達式。

?

正則表達式在數(shù)據(jù)庫的應(yīng)用

MySQL可以通過?LIKE ...%?來進行模糊匹配。

%、_、[a-d]與一些字符組合而成的匹配規(guī)則式就是正則表達式,這是在SQL里最常用的用法。

?

更復(fù)雜的正則表達式

MySQL 同樣也支持其他正則表達式的匹配, MySQL中使用 REGEXP 操作符來進行正則表達式匹配。

如果您了解PHP或Perl,那么操作起來就非常簡單,因為MySQL的正則表達式匹配與這些腳本的類似。

一般這種復(fù)雜的寫法不用,用%、_、[abc]這些匹配模式基本也夠用了。

下表中的正則模式可應(yīng)用于 REGEXP 操作符中。

模式描述
^匹配輸入字符串的開始位置。如果設(shè)置了 RegExp 對象的 Multiline 屬性,^ 也匹配 '\n' 或 '\r' 之后的位置。='a%'
$匹配輸入字符串的結(jié)束位置。如果設(shè)置了RegExp 對象的 Multiline 屬性,$ 也匹配 '\n' 或 '\r' 之前的位置。='%a'
.匹配除 "\n" 之外的任何單個字符。要匹配包括 '\n' 在內(nèi)的任何字符,請使用像 '[.\n]' 的模式。
[...]字符集合。匹配所包含的任意一個字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。只匹配單個字符,該字符在方括號內(nèi)即可。
[^...]負值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。^是否定意思的脫字號。只匹配單個字符,該字符在方括號內(nèi)即可。
p1|p2|p3匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 則匹配 "zood" 或 "food"。
*匹配前面的子表達式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價于{0,}。
+匹配前面的子表達式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價于 {1,}。
{n}n 是一個非負整數(shù)。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。 ='%oo%',當(dāng)然也會匹配到fooo,因為也符合%oo%。
{n,m}m 和 n 均為非負整數(shù),其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,o{2,5},匹配2到5個o。也沒有限制前后是否還可以再出現(xiàn)o,如果大于5也是可以匹配到的。因為foooooooo也符合該表達式。

?

實例

了解以上的正則需求后,我們就可以根據(jù)自己的需求來編寫帶有正則表達式的SQL語句。

以下我們將列出幾個小實例(表名:person_tbl )來加深我們的理解:

?

查找name字段中以'st'為開頭的所有數(shù)據(jù):

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';

等于SELECT name FROM person_tbl WHERE name like 'st%';

?

查找name字段中以'ok'為結(jié)尾的所有數(shù)據(jù):

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';

?

查找name字段中包含'mar'字符串的所有數(shù)據(jù):

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';

?

查找name字段中以元音字符開頭或以'ok'字符串結(jié)尾的所有數(shù)據(jù):

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

I為‘或’ = or

?

總結(jié)

以上是生活随笔為你收集整理的SQL——正则表达式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。