最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL使用正則表達(dá)式去檢索指定數(shù)據(jù)庫(kù)字段

 更新時(shí)間:2022年09月29日 10:53:41   作者:阿檸xn  
這篇文章主要介紹了MySQL使用正則表達(dá)式去檢索指定數(shù)據(jù)庫(kù)字段,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

使用MySQL正則表達(dá)式

基本字符匹配

例:檢索列prod_name 包含文本1000的所有行。

SELECT prod_name 
FROM products 
WHERE prod_name REGEXP '1000'
ORDER BY prod_name;

??REGEXP告訴MySQL,它后面跟著的是正則表達(dá)式。

SELECT prod_name 
FROM products 
WHERE prod_name REGEXP '.000'
ORDER BY prod_name;

??這個(gè) . 可以說(shuō)是正則表達(dá)式的一部分用途了。它表示匹配任一一個(gè)字符。

LIKE 和 REGEXP的區(qū)別:

  • LIKE是匹配整個(gè)列,完全一樣或者帶通配符才可以匹配成功
  • REGEXP是只要列中包含文本就可以匹配成功。當(dāng)然REGEXP也可以匹配整個(gè)列值。

區(qū)分大小寫(xiě):

  • 正則表達(dá)式的匹配是不區(qū)分大小寫(xiě)的。為區(qū)分大小寫(xiě)可使用BINARY關(guān)鍵字。
    • 如:WHERE prod_name REGEXP BINARY 'JetPack .000'

進(jìn)行OR匹配

使用符號(hào) |:

SELECT prod_name 
FROM products
WHERE prod_name REGEXP '1000|2000'
ORDER BY prod_name;

匹配幾個(gè)字符串之一

如果你只想匹配特定的字符,可以通過(guò)指定一組用 [ ] 括起來(lái)的字符完成。

SELECT prod_name
FROM products
WHERE prod_name REGEXP '[123] Ton'
ORDER BY  prod_name;

上面這個(gè)結(jié)果,還想說(shuō)明一個(gè)問(wèn)題,就是REGEXP雖然是可以匹配尾巴和頭部的空格,但是你在單引號(hào)之間的空格還是需要你自己寫(xiě)上去的,單引號(hào)之間的空格你不寫(xiě)可是匹配不到結(jié)果的。

如上面結(jié)果所示,[]其實(shí)就是另一種方式的or語(yǔ)句,【123】其實(shí)也就是【1|2|3】。當(dāng)然你寫(xiě)后者也是沒(méi)有任何問(wèn)題的。

下面我們?cè)倏匆粋€(gè)例子:

SELECT prod_name
FROM products
WHERE prod_name REGEXP '1|2|3 Ton'
ORDER BY  prod_name;

從結(jié)果上我們不難看出,你不用【】括起來(lái),MySQL就會(huì)理解為1or2or3 Ton這樣的形式

而下面那三行能匹配到也就是因?yàn)槔锩嬗?or2。

??字符集也可以被否定:[ ^123 ]的意思就是匹配除了這些以外的任何東西。

這個(gè) ^ 在【】括號(hào)里,就是除了的1,2,3,的意思,但是如果沒(méi)有【】,那就是定位符是文本的開(kāi)始位置的意思。

你比如說(shuō)下面這兩結(jié)果就是一樣的:

你再看一個(gè)理解定位符^

當(dāng)時(shí)我有一個(gè)這樣的例子不明白,后來(lái)想明白了。

上面這個(gè)當(dāng)時(shí)我就不明白,為什么都不包含1了,紅框里還有,這就是REGEXP,你不包含1or2or3.你有其他的元素呀,所以你就得顯示出來(lái)。

匹配范圍

集合可以用來(lái)定義要匹配的一個(gè)或者多個(gè)字符。

例如:下面的集合將匹配數(shù)字0到9

【0123456789】

為了簡(jiǎn)化這種類(lèi)型的集合,可使用 - 來(lái)定義一個(gè)范圍。

【0-9】

SELECT prod_name
FROM products
WHERE prod_name REGEXP '[1-5] Ton'
ORDER BY prod_name;

匹配特殊字符

也就是轉(zhuǎn)義。我們要匹配特殊字符必須用\為前導(dǎo)。

SELECT vend_name
FROM vendors
WHERE vend_name REGEXP '\.'
ORDER BY vend_name;

??多數(shù)的正則表達(dá)式實(shí)現(xiàn)使用單個(gè)反斜杠轉(zhuǎn)義特殊字符,以便能使用這些字符本身。但是mysql要求兩個(gè)反斜杠(mysql自己解釋一個(gè),正則表達(dá)式庫(kù)解釋一個(gè))。

匹配字符類(lèi)

存在找出你自己經(jīng)常使用的數(shù)字,所有字母字符或所有數(shù)字字母字符等的匹配。為方便工作,可以使用預(yù)定義的字符集,稱(chēng)為字符類(lèi)。

類(lèi)說(shuō)明
【:alnum:】任意字母和數(shù)字(同【a-zA-Z0-9】)
【:alpha:】任意字符【a-zA-Z】
【:blank:】空格和制表【\t】
[:cntrl:]ASCII控制字符(ASCII0到31和127)
【:digit:】任意數(shù)字(【0-9】)
【:graph:】與【:print:】相同,但不包括空格
【:lower:】任意小寫(xiě)字母【a-z】
【:print:】任意可打印字符
【:punct:】既不在【:alnum:】也不在【:cntrl:】中的任意字符
【:space:】包括空格在內(nèi)的任意空白符(同【\f\n\r\t\v】)
[:upper:]任意大寫(xiě)字母【A-Z】
【:xdigit:】任意十六進(jìn)制數(shù)字(同【a-fA-F0-9】)

匹配多個(gè)實(shí)例

重復(fù)元字符

元字符說(shuō)明
*0個(gè)或者多個(gè)匹配
+1個(gè)或多個(gè)匹配(等于{1,})
0個(gè)或1個(gè)匹配(等于{0,1})
{n}指定數(shù)目的匹配
{n,}不少于指定數(shù)目的匹配
{n,m}匹配數(shù)目的范圍
SELECT prod_name
FROM products
WHERE prod_name REGEXP '\([0-9] sticks?\)'
ORDER BY prod_name;

??我覺(jué)得難理解的點(diǎn)就在于,那個(gè)?的匹配(s后的?使s可選,因?yàn)??匹配他前面的的任何字?次或者1次)。這也就是會(huì)有第一條結(jié)果的原因。

例:匹配連在一起的的4位數(shù)字。

SELECT prod_name
FROM products
WHERE prod_name REGEXP '[[:digit:]]{4}'
ORDER BY prod_name;

定位符

之前的例子都是匹配任一一個(gè)串中任意位置的文本。為了匹配特定位置的文本,我們需要使用定位符。

元字符說(shuō)明
^文本的開(kāi)始
$文本的結(jié)束
[[:<:]]詞的開(kāi)始
[[:>:]]詞的結(jié)束

例:找一個(gè)以數(shù)或小數(shù)點(diǎn)開(kāi)始的所有產(chǎn)品

SELECT prod_name
FROM products
WHERE prod_name REGEXP '^[0-9\.]'
ORDER BY prod_name;

到此這篇關(guān)于MySQL使用正則表達(dá)式去檢索指定數(shù)據(jù)庫(kù)字段的文章就介紹到這了,更多相關(guān)MySQL檢索數(shù)據(jù)庫(kù)字段內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

安丘市| 潍坊市| 安岳县| 扶绥县| 蕉岭县| 东乌珠穆沁旗| 台东县| 大英县| 观塘区| 龙南县| 应用必备| 湖南省| 台北市| 西平县| 措美县| 盐城市| 金湖县| 阿巴嘎旗| 蒲江县| 双流县| 蓝山县| 周口市| 桂阳县| 华安县| 社旗县| 浑源县| 靖边县| 共和县| 乌恰县| 堆龙德庆县| 镶黄旗| 彭水| 门源| 长宁县| 周宁县| 辉县市| 维西| 湄潭县| 淮北市| 大石桥市| 南汇区|