php mysql 正则表达式_MYSQL使用正则表达式过滤数据_MySQL
一、正則與LIKE的區(qū)別
Mysql的正則表達式僅僅使SQL語言的一個子集,可以匹配基本的字符、字符串。
例如:select * from wp_posts where post_name REGEXP'hello',可以檢索出列post_name中所有包含hello的行
REGEXP'.og'.是正則表達式中里一個特殊的字符。它表示匹配一個字符,因此,dog,hog,mog等等都能匹配。
注意:
關(guān)于LIKE和REGEXP的區(qū)別:LIKE匹配整個列。如果被匹配的文本僅在列值中出現(xiàn),LIKE并不會找到它,相應(yīng)的行也不會返回(當(dāng)然,使用通配符除外)。而REGEXP在列值內(nèi)進行匹配,如果被匹配的匹配的文本在列值中出現(xiàn),REGEXP將會找到它,相應(yīng)的行將被返回,這時一個非常重要的差別(當(dāng)然,如果適應(yīng)定位符號^和$,可以實現(xiàn)REGEXP匹配整個列而不是列的子集)。
關(guān)于大小寫的區(qū)分:MySQL中正則表達式匹配(從版本3.23.4后)不區(qū)分大小寫。如果要區(qū)分大小寫,應(yīng)該使用BINARY關(guān)鍵字,如where post_name REGEXP BINARY 'Hello.000'
二、基本字符匹配
檢索列prod_name 包含文本1000的所有行:
進行OR匹配相當(dāng)于:或操作 “|”
匹配幾個字符之一只想匹配特定的字符。 可以通過指定一組用[和]括起來的字符來完成。
[456]定義了一組字符,他的意思是匹配4或5或6. []是另一種形式的OR語句。[456]是[4|5|6]的縮寫。匹配范圍
[1-3] a-z都是合法的范圍
匹配特殊字符
正則表達式語言由特殊含義的特殊字符構(gòu)成。
. 在正則表達式中表示匹配任何一個字符
比如匹配prod_name中包括on字符串的行:
那如何匹配.,[],|,-?
為了匹配特殊字符,必須用\\為前導(dǎo)。 比如\\.表示查找·
匹配字符類
匹配多個實例
再比如 匹配連在一起的4位數(shù)字:
sticks? : s后的?使s可選,因為?匹配它前面緊跟的任何字符的0次或者1次出現(xiàn)。
[:digit:]匹配任意數(shù)字,因而它為數(shù)字的一個集合。{4}確切地要求它前面的字符出現(xiàn)4次。
所以[:digit:]{4}匹配連在一起的任意4位數(shù)字。
三、定位符
目前為止所有例子都是匹配一個串中任意為止的文本。為了匹配特定為止的文本,需要使用定位符。
也可以在不使用數(shù)據(jù)庫的情況下測試正則表達式的正確性:
SELECT 來測試正則表達式,REGEXP檢查總是返回0或1,
SELECT 'HELLO‘ REGEXP '0‘//返回為0
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。
本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請注明出處,感謝您的尊重!
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的php mysql 正则表达式_MYSQL使用正则表达式过滤数据_MySQL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 文件上传 jar_JavaWe
- 下一篇: oracle集群rac无法访问,解决Or