MySQL通配符與正則表達(dá)式搜過(guò)濾數(shù)據(jù)詳解
通配符過(guò)濾
通配符:用來(lái)匹配值的一部分特殊字符。
通配符可以在搜索模式中任意位置使用,并且可以使用多個(gè)通配符。
搜索模式:由字面值、通配符或者兩者組合構(gòu)成的搜索條件。
語(yǔ)法(使用LIKE操作符):
SELECT [column_name] FROM [table_name] WHERE [column_name] LIKE '[string]';
通配符 %
‘%’ 表示任何字符出現(xiàn)任意次數(shù),例如 LIKE ‘jet%’ 匹配詞jet起頭的值,‘%anvil%’ 匹配任何位置包含文本anvil的值。
注意:
- 根據(jù)MySQL的配置方式,搜索可以是區(qū)分大小寫(xiě)的;
- ‘%’ 可以匹配0個(gè)字符;
- 值的尾空格會(huì)干擾通配符匹配,最好在搜索模式最后附加一個(gè)%;
- ‘%’ 不能匹配NULL。
通配符 _
‘_’ 只匹配單個(gè)字符。
技巧
- 不要過(guò)度使用通配符,因?yàn)檫@會(huì)很花時(shí)間;
- 如有必要,使用通配符匹配在搜索的最后;
正則表達(dá)式過(guò)濾
語(yǔ)法(使用REGEXP操作符):
SELECT [column_name] FROM [table_name] WHERE [column_name] REGEXP '[string]';
字符匹配
基本匹配:‘.’ 表示匹配任意一個(gè)字符。
正則表達(dá)式匹配不區(qū)分大小寫(xiě),使用BINARY關(guān)鍵字區(qū)分,例如WHERE prod_name REGEXP BINARY ‘JetPack .000’。
- OR匹配:‘1000|2000’ 表示匹配1000或者2000。
- 多字符匹配:‘[123]’ 表示匹配 1 或 2 或 3,是 [1|2|3] 的縮寫(xiě)。
但是 ‘[1|2|3] Ton’ 和 ‘1|2|3 Ton’ 匹配結(jié)果并不相同,后者表示匹配 1 或 2 或 3 Ton。
- 否定字符匹配:‘[^123]’ 表示匹配除這些字符外的任何東西。
- 匹配范圍:‘[0-9]’ 與 ‘[0123456789]’ 相同。‘[a-z]’ 匹配任意字母字符。
- 匹配特殊字符:使用轉(zhuǎn)義字符 ‘\’,例如 ‘\.’ 、’ \|’ 、‘\[’ 、‘\’。
其他字符
空白元字符
元字符 | 說(shuō)明 |
---|---|
\\f | 換頁(yè) |
\\n | 換行 |
\\r | 回車(chē) |
\\t | 制表 |
\\v | 縱向制表 |
字符類
類 | 說(shuō)明 |
---|---|
[:alnum:] | 任意字母和數(shù)字 |
[:alpha:] | 任意字符(同[a-zA-Z]) |
[:blank:] | 空格和制表 |
[:cntrl:] | ASCII控制字符(0-31和127) |
[:digit:] | 任意數(shù)字 |
[:graph:] | 與[:print:]相同,但是不包括空格 |
[:lower:] | 任意小寫(xiě)字母 |
[:print:] | 任意可打印字符 |
[:punct:] | 既不在[:alnum:]也不在[:cntrl:] 中的任意字符 |
[:space:] | 包括空格在內(nèi)的任意空白字符 |
[:upper:] | 任意大寫(xiě)字符 |
[:xdigit:] | 任意十六進(jìn)制數(shù)字 |
重復(fù)元字符
元字符 | 說(shuō)明 |
---|---|
* | 0個(gè)或多個(gè)匹配 |
+ | 1個(gè)或多個(gè)匹配 |
? | 0個(gè)或多個(gè)匹配 |
{n} | 指定數(shù)目匹配 |
{n, } | 不少于指定數(shù)目的匹配 |
{n, m} | 匹配數(shù)目的范圍(m不超過(guò)255) |
定位元字符
元字符 | 說(shuō)明 |
---|---|
^ | 文本的開(kāi)始 |
$ | 文本的結(jié)尾 |
[[:<:]] | 詞的開(kāi)始 |
[[:>:]] | 詞的結(jié)尾 |
舉例:
SELECT prod_name FROM products WHERE prod_name REGEXP '^[0-9\\.]';
對(duì)比
如果匹配文本在列值中出現(xiàn),則LIKE不會(huì)匹配,但是REGEXP會(huì)匹配。
可以通過(guò)用 ^ 開(kāi)始每個(gè)表達(dá)式,用 $ 結(jié)束每個(gè)表達(dá)式,使得REGEXP的作用和LIKE一樣。
正則表達(dá)式測(cè)試
SELECT 'hello' REGEXP '[0-9]'; //結(jié)果返回0
總結(jié)
到此這篇關(guān)于MySQL通配符與正則表達(dá)式搜過(guò)濾數(shù)據(jù)的文章就介紹到這了,更多相關(guān)MySQL通配符與正則過(guò)濾數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MySQL模糊查找like通配符使用(小白入門(mén)篇)
- mysql 通配符(sql 高級(jí)過(guò)濾)
- MySQL模糊查詢用法大全(正則、通配符、內(nèi)置函數(shù))
- MySQL 數(shù)據(jù)庫(kù) like 語(yǔ)句通配符模糊查詢小結(jié)
- Mysql| 使用通配符進(jìn)行模糊查詢?cè)斀?like,%,_)
- 淺談mysql通配符進(jìn)行模糊查詢的實(shí)現(xiàn)方法
- 淺談MySQL模糊查詢中通配符的轉(zhuǎn)義
- 在MySQL中使用通配符時(shí)應(yīng)該注意的問(wèn)題
- MySql like模糊查詢通配符使用詳細(xì)介紹
- mysql通配符的具體使用
相關(guān)文章
mysql 8.0.11 macos10.13安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了mysql 8.0.11 macos10.13安裝配置方法圖文教程,mysql數(shù)據(jù)庫(kù)安裝及配置環(huán)境變量,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07Windows下MySql錯(cuò)誤代碼1045的解決方法
這篇文章主要介紹了Windows下MySql錯(cuò)誤代碼1045的解決方法,文中還包含了2個(gè)Linux下的解決方法,需要的朋友可以參考下2014-06-06