欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

使用MySQL正則表達式

基本字符匹配

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

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

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

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

??這個 . 可以說是正則表達式的一部分用途了。它表示匹配任一一個字符。

LIKE 和 REGEXP的區(qū)別:

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

區(qū)分大小寫:

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

進行OR匹配

使用符號 |:

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

匹配幾個字符串之一

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

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

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

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

下面我們再看一個例子:

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

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

而下面那三行能匹配到也就是因為里面有1or2。

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

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

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

你再看一個理解定位符^

當時我有一個這樣的例子不明白,后來想明白了。

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

匹配范圍

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

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

【0123456789】

為了簡化這種類型的集合,可使用 - 來定義一個范圍。

【0-9】

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

匹配特殊字符

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

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

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

匹配字符類

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

說明
【: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:】任意十六進制數(shù)字(同【a-fA-F0-9】)

匹配多個實例

重復元字符

元字符說明
*0個或者多個匹配
+1個或多個匹配(等于{1,})
?0個或1個匹配(等于{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;

??我覺得難理解的點就在于,那個?的匹配(s后的?使s可選,因為?匹配他前面的的任何字符0次或者1次)。這也就是會有第一條結(jié)果的原因。

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

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

定位符

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

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

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

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

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

相關(guān)文章

  • MySQL約束與索引概念詳解

    MySQL約束與索引概念詳解

    約束是用來對數(shù)據(jù)業(yè)務規(guī)則和數(shù)據(jù)完整性進行實施、維護。約束的作用范圍僅限在當前數(shù)據(jù)庫,約束可以被當做數(shù)據(jù)庫對象來處理,它們具有名稱和關(guān)聯(lián)模式,是邏輯約束,不會因為設置約束而額外占用空間
    2023-04-04
  • Windows服務器MySQL中文亂碼的解決方法

    Windows服務器MySQL中文亂碼的解決方法

    這篇文章主要介紹了MySQL中文亂碼的一些解決方案,本文同時分解了MySQL中文亂碼的原因分析,需要的朋友可以參考下
    2015-01-01
  • sql?distinct多個字段的使用

    sql?distinct多個字段的使用

    這篇文章主要介紹了sql?distinct多個字段的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java的Struts框架中的主題模板和國際化設置

    Java的Struts框架中的主題模板和國際化設置

    這篇文章主要介紹了Java的Struts框架中的主題模板和國際化設置,Struts是Java的SSH三大web開放框架之一,需要的朋友可以參考下
    2015-12-12
  • mysql觸發(fā)器簡介、創(chuàng)建觸發(fā)器及使用限制分析

    mysql觸發(fā)器簡介、創(chuàng)建觸發(fā)器及使用限制分析

    這篇文章主要介紹了mysql觸發(fā)器簡介、創(chuàng)建觸發(fā)器及使用限制,結(jié)合實例形式分析了mysql觸發(fā)器的功能、原理、創(chuàng)建、用法及操作注意事項,需要的朋友可以參考下
    2019-12-12
  • mysql大批量插入數(shù)據(jù)的正確解決方法

    mysql大批量插入數(shù)據(jù)的正確解決方法

    這篇文章主要介紹了mysql大批量插入數(shù)據(jù)的正確做法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • 解析MySQL索引的作用

    解析MySQL索引的作用

    這篇文章主要為大家詳細介紹了MySQL索引的作用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • MYSQL?Binlog恢復誤刪數(shù)據(jù)庫詳解

    MYSQL?Binlog恢復誤刪數(shù)據(jù)庫詳解

    MySQL一旦誤刪數(shù)據(jù)庫之后恢復數(shù)據(jù)很麻煩,這里記錄一下艱辛的恢復過程,這篇文章主要給大家介紹了關(guān)于如何利用MySQL的binlog恢復誤刪數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Slave memory leak and trigger oom-killer

    Slave memory leak and trigger oom-killer

    這篇文章主要介紹了Slave memory leak and trigger oom-killer,需要的朋友可以參考下
    2016-07-07
  • Mysql InnoDB引擎的索引與存儲結(jié)構(gòu)詳解

    Mysql InnoDB引擎的索引與存儲結(jié)構(gòu)詳解

    這篇文章主要給大家介紹了Mysql InnoDB引擎的索引與存儲結(jié)構(gòu)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2019-01-01

最新評論