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

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

 更新時(shí)間:2022年09月29日 10:53:41   作者:阿檸xn  
這篇文章主要介紹了MySQL使用正則表達(dá)式去檢索指定數(shù)據(jù)庫字段,文章圍繞主題展開詳細(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è) . 可以說是正則表達(dá)式的一部分用途了。它表示匹配任一一個(gè)字符。

LIKE 和 REGEXP的區(qū)別:

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

區(qū)分大小寫:

  • 正則表達(dá)式的匹配是不區(qū)分大小寫的。為區(qū)分大小寫可使用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è)字符串之一

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

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

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

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

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

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

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

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

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

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

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

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

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

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

匹配范圍

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

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

【0123456789】

為了簡化這種類型的集合,可使用 - 來定義一個(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á)式庫解釋一個(gè))。

匹配字符類

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

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

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

重復(fù)元字符

元字符說明
*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;

??我覺得難理解的點(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è)串中任意位置的文本。為了匹配特定位置的文本,我們需要使用定位符。

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

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

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

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

相關(guān)文章

最新評(píng)論

民丰县| 永州市| 宝山区| 郴州市| 阿尔山市| 临邑县| 吴川市| 洪湖市| 城固县| 和田县| 梁河县| 旅游| 迁西县| 崇明县| 宁夏| 那坡县| 崇明县| 蒲城县| 万盛区| 昆明市| 嘉兴市| 临沧市| 金川县| 长海县| 延寿县| 鄂托克前旗| 通道| 始兴县| 密云县| 黑水县| 珲春市| 阳新县| 甘德县| 亳州市| 宁阳县| 华阴市| 吉林省| 渭源县| 吉安市| 尖扎县| 江城|