MySQL通配符與正則表達(dá)式搜過濾數(shù)據(jù)詳解
通配符過濾
通配符:用來匹配值的一部分特殊字符。
通配符可以在搜索模式中任意位置使用,并且可以使用多個通配符。
搜索模式:由字面值、通配符或者兩者組合構(gòu)成的搜索條件。
語法(使用LIKE操作符):
SELECT [column_name] FROM [table_name] WHERE [column_name] LIKE '[string]';
通配符 %
‘%’ 表示任何字符出現(xiàn)任意次數(shù),例如 LIKE ‘jet%’ 匹配詞jet起頭的值,‘%anvil%’ 匹配任何位置包含文本anvil的值。
注意:
- 根據(jù)MySQL的配置方式,搜索可以是區(qū)分大小寫的;
- ‘%’ 可以匹配0個字符;
- 值的尾空格會干擾通配符匹配,最好在搜索模式最后附加一個%;
- ‘%’ 不能匹配NULL。
通配符 _
‘_’ 只匹配單個字符。
技巧
- 不要過度使用通配符,因為這會很花時間;
- 如有必要,使用通配符匹配在搜索的最后;
正則表達(dá)式過濾
語法(使用REGEXP操作符):
SELECT [column_name] FROM [table_name] WHERE [column_name] REGEXP '[string]';
字符匹配
基本匹配:‘.’ 表示匹配任意一個字符。

正則表達(dá)式匹配不區(qū)分大小寫,使用BINARY關(guān)鍵字區(qū)分,例如WHERE prod_name REGEXP BINARY ‘JetPack .000’。
- OR匹配:‘1000|2000’ 表示匹配1000或者2000。
- 多字符匹配:‘[123]’ 表示匹配 1 或 2 或 3,是 [1|2|3] 的縮寫。
但是 ‘[1|2|3] Ton’ 和 ‘1|2|3 Ton’ 匹配結(jié)果并不相同,后者表示匹配 1 或 2 或 3 Ton。
- 否定字符匹配:‘[^123]’ 表示匹配除這些字符外的任何東西。
- 匹配范圍:‘[0-9]’ 與 ‘[0123456789]’ 相同。‘[a-z]’ 匹配任意字母字符。
- 匹配特殊字符:使用轉(zhuǎn)義字符 ‘\’,例如 ‘\.’ 、’ \|’ 、‘\[’ 、‘\’。
其他字符
空白元字符
| 元字符 | 說明 |
|---|---|
| \\f | 換頁 |
| \\n | 換行 |
| \\r | 回車 |
| \\t | 制表 |
| \\v | 縱向制表 |
字符類
| 類 | 說明 |
|---|---|
| [:alnum:] | 任意字母和數(shù)字 |
| [:alpha:] | 任意字符(同[a-zA-Z]) |
| [:blank:] | 空格和制表 |
| [:cntrl:] | ASCII控制字符(0-31和127) |
| [:digit:] | 任意數(shù)字 |
| [:graph:] | 與[:print:]相同,但是不包括空格 |
| [:lower:] | 任意小寫字母 |
| [:print:] | 任意可打印字符 |
| [:punct:] | 既不在[:alnum:]也不在[:cntrl:] 中的任意字符 |
| [:space:] | 包括空格在內(nèi)的任意空白字符 |
| [:upper:] | 任意大寫字符 |
| [:xdigit:] | 任意十六進(jìn)制數(shù)字 |
重復(fù)元字符
| 元字符 | 說明 |
|---|---|
| * | 0個或多個匹配 |
| + | 1個或多個匹配 |
| ? | 0個或多個匹配 |
| {n} | 指定數(shù)目匹配 |
| {n, } | 不少于指定數(shù)目的匹配 |
| {n, m} | 匹配數(shù)目的范圍(m不超過255) |
定位元字符
| 元字符 | 說明 |
|---|---|
| ^ | 文本的開始 |
| $ | 文本的結(jié)尾 |
| [[:<:]] | 詞的開始 |
| [[:>:]] | 詞的結(jié)尾 |
舉例:
SELECT prod_name FROM products WHERE prod_name REGEXP '^[0-9\\.]';

對比
如果匹配文本在列值中出現(xiàn),則LIKE不會匹配,但是REGEXP會匹配。

可以通過用 ^ 開始每個表達(dá)式,用 $ 結(jié)束每個表達(dá)式,使得REGEXP的作用和LIKE一樣。
正則表達(dá)式測試
SELECT 'hello' REGEXP '[0-9]'; //結(jié)果返回0
總結(jié)
到此這篇關(guān)于MySQL通配符與正則表達(dá)式搜過濾數(shù)據(jù)的文章就介紹到這了,更多相關(guān)MySQL通配符與正則過濾數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL多線程復(fù)制遇到Error_code: 1872的解決方案
本文給大家分享的是在使用mysql主從復(fù)制的時候遇到Error_code: 1872錯誤的解決方法,非常的簡單,有需要的小伙伴可以參考下2016-09-09
MySQL數(shù)據(jù)庫安裝和Navicat for MySQL配合使用教程
MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),目前屬于 Oracle 旗下公司。這篇文章主要介紹了MySQL數(shù)據(jù)庫安裝和Navicat for MySQL配合使用,需要的朋友可以參考下2019-06-06
mysql 發(fā)生系統(tǒng)錯誤1067的解決方法
今天要把WEB項目打包成EXE,可是在數(shù)據(jù)庫上卡住了。在啟動數(shù)據(jù)庫服務(wù)的時候發(fā)生系統(tǒng)錯誤 1067。2009-09-09
MySQL數(shù)據(jù)庫聚合函數(shù)與分組查詢舉例詳解
在MySQL中聚合函數(shù)和分組查詢經(jīng)常一起使用,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫聚合函數(shù)與分組查詢的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
MySQL 5.6 解壓縮版安裝配置方法圖文教程(win10)
這篇文章主要為大家詳細(xì)介紹了MySQL for Windows 解壓縮版安裝配置的相關(guān)資料,需要的朋友可以參考下2016-07-07
MySQL5.7中 performance和sys schema中的監(jiān)控參數(shù)解釋(推薦)
在MySQL5.7中,performance schema有很大改進(jìn),包括引入大量新加入的監(jiān)控項、降低占用空間和負(fù)載,以及通過新的sys schema機(jī)制顯著提升易用性。下面通過本文給大家介紹 MySQL5.7中 performance和sys schema中的監(jiān)控參數(shù)解釋,需要的朋友可以參考下2017-08-08

