一文帶你了解如何用MySQL通配符實(shí)現(xiàn)過濾功能
LIKE操作符
通配符(wildcard)
通配符 (wildcard) 用來匹配值的一部分的特殊字符
搜索模式(search pattern)
搜索模式(search pattern) 由字面值、通配符或兩者組合構(gòu)成的搜索條件。
深入分析
通配符本身實(shí)際是SQL的WHERE子中有特殊含義的字符,SQL支持幾種通配符。
為在搜索子句中使用通配符,必須使用LIKE操作符。LIKE指示MySQL后跟的搜索模式利用通配符匹配而不是直接相等匹配進(jìn)行比較。
謂詞
謂詞操作符何時不是操作符?答案是在它作為謂詞(predicate)時。從技術(shù)上說,LIKE是謂詞而不是操作符。雖然最終的結(jié)果是相同的,但應(yīng)該對此術(shù)語有所了解,以免在SQL文檔中遇到此術(shù)語時不知道
百分號(%)通配符
提示
最常使用的通配符是百分號(%)。在搜索串中,%表示任何字符出現(xiàn)任意次數(shù)。例如,為了找出所有以詞jet起頭的產(chǎn)品,可使用以下SELECT語句:
輸入
SELECT prod_id,prod_name FROM products WHERE prod_name LIKE 'jet%';
輸出
分析
此例子使用了搜索模式 ‘jet%’。在執(zhí)行這條子句時,將檢索任意以jet起頭的詞。%告訴MySQL接受jet之后的任意字符,不管它有多少字符。
注意區(qū)分大小寫
區(qū)分大小寫 根據(jù)MySQL的配置方式,搜索可以是區(qū)分大小寫的。如果區(qū)分大小寫,'jet%'與JetPack 1000將不匹配
例子精講
通配符可在搜索模式中任意位置使用,并且可以使用多個通配符下面的例子使用兩個通配符,它們位于模式的兩端:
輸入
SELECT prod_id,prod_name FROM products WHERE prod_name LIKE 'anvil%';
輸出
分析
搜索模式%anvil%表示匹配任何位置包含文本anvil的值,而不論它之前或之后出現(xiàn)什么字符。
通配符也可以出現(xiàn)在搜索模式的中間,雖然這樣做不太有用。下面的例子找出以s起頭以e結(jié)尾的所有產(chǎn)品:
輸入
SELECT prod_name FROM products WHERE prod_name LIKE 's%e';
分析
重要的是要注意到,除了一個或多個字符外,還能匹配0個字符。%代表搜索模式中給定位置的0個、1個或多個字符
注意尾空格
注意尾空格 尾空格可能會干擾通配符匹配。例如,在保存詞anvil時,如果它后面有一個或多個空格,則子句WHERE prod_name LIKE ‘%anvil’ 將不會匹配它們,因?yàn)樵谧詈蟮?后有多余的字符。解決這個問題的一個簡單的辦法是在搜索模式最后附加一個%。一個更好的辦法是使用函數(shù)(在后面的章節(jié)會介紹)去掉首尾空格
注意NULL
注意NULL 雖然似乎%通配符可以匹配任何東西,但有一個例外,即NULL。即使是WHERE prod_name LIKE%也不能匹配用值NULL作為產(chǎn)品名的行
下劃線(_)通配符
概要
另一個有用的通配符是下劃線(_)。下劃線的用途與%一樣,但下劃線只匹配單個字符而不是多個字符。
舉例分析
輸入
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE '_ ton anvil';
輸出
分析
此WHERE子句中的搜索模式給出了后面跟有文本的兩個通配符。結(jié)果只顯示匹配搜索模式的行:第一行中下劃線匹配1,第二行中匹配2。.5 ton anvil產(chǎn)品沒有匹配,因?yàn)樗阉髂J揭笃ヅ鋬蓚€通配符而不是一個。對照一下,下面的SELECT語句使用%通配符,
返回三行產(chǎn)品:
SELECT prod_id,prod_name FROM products WHERE prod_name LIKE '% ton anvil';
輸出
注意
與%能匹配0個字符不一樣, 總是匹配一個字符,不能多也不能少。
理論概述
- 不要過度使用通配符。如果其他操作符能達(dá)到相同的目的,應(yīng)該使用其他操作符。
- 在確實(shí)需要使用通配符時,除非絕對有必要,否則不要把它們用在搜索模式的開始處。把通配符置于搜索模式的開始處,搜索起來是最慢的。
- 仔細(xì)注意通配符的位置。如果放錯地方,可能不會返回想要的數(shù)據(jù)
如何鞏固學(xué)習(xí)
提示:在學(xué)習(xí)的過程中,我們需要先自行進(jìn)行思考,而不是一遇到不會的就放棄思考直接看答案,如果最后遇到真的不會的題目,我們可以適當(dāng)?shù)倪M(jìn)行觀看答案,看自己的思路是否正確,在作出正確的判斷
本文小結(jié)
本文章介紹了什么是通配符以及如何在WHERE子句中使用SQL通配符并且還說明了通配符應(yīng)該細(xì)心使用,不要過度使用。
到此這篇關(guān)于一文帶你了解如何用MySQL通配符實(shí)現(xiàn)過濾功能的文章就介紹到這了,更多相關(guān)MySQL通配符過濾內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL數(shù)字的取整、四舍五入、保留n位小數(shù)方式
這篇文章主要介紹了MySQL數(shù)字的取整、四舍五入、保留n位小數(shù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01出現(xiàn)錯誤mysql Table ''performance_schema...解決辦法
這篇文章主要介紹了解決出現(xiàn)錯誤mysql Table 'performance_schema.session_variables' doesn't exist的相關(guān)資料,需要的朋友可以參考下2017-04-04