mysql必知必會 用萬用字元進行過濾

2021-10-10 20:23:11 字數 2271 閱讀 5765

前面介紹的所有操作符都是針對已知值進行過濾的。不管是匹配一

個還是多個值,測試大於還是小於已知值,或者檢查某個範圍的值,共

同點是過濾中使用的值都是已知的。但是,這種過濾方法並不是任何時

候都好用。例如,怎樣搜尋產品名中包含文字anvil的所有產品?用簡單

的比較操作符肯定不行,必須使用萬用字元。利用萬用字元可建立比較特定

資料的搜尋模式。在這個例子中,如果你想找出名稱包含anvil的所有產

品,可構造乙個萬用字元搜尋模式,找出產品名中任何位置出現anvil的產

品。萬用字元(wildcard) 用來匹配值的一部分的特殊字元。

搜尋模式(search pattern)由字面值、萬用字元或兩者組合構

成的搜尋條件。

萬用字元本身實際是sql的 where 子句中有特殊含義的字元,sql支援幾

種萬用字元。為在搜尋子句中使用萬用字元,必須使用 like 操作符。 like

指示mysql,後跟的搜尋模式利用萬用字元匹配而不是直接相等匹配進行比較。

謂詞 操作符何時不是操作符?答案是在它作為謂詞(predi-

cate)時。從技術上說, like 是謂詞而不是操作符。雖然最終

的結果是相同的,但應該對此術語有所了解,以免在sql文件

中遇到此術語時不知道

最常使用的萬用字元是百分號( % )。在搜尋串中, % 表示任何字元出現

任意次數。例如,為了找出所有以詞 jet 起頭的產品,可使用以下 select

語句:

此例子使用了搜尋模式 'jet%' 。在執行這條子句時,將檢索任

意以 jet 起頭的詞。 % 告訴mysql接受 jet 之後的任意字元,不

管它有多少字元

區分大小寫 根據mysql的配置方式,搜尋可以是區分大小

寫的。如果區分大小寫, 'jet%' 與 jetpack 1000 將不匹配

萬用字元可在搜尋模式中任意位置使用,並且可以使用多個萬用字元。

下面的例子使用兩個萬用字元,它們位於模式的兩端

搜尋模式 '%anvil%' 表示匹配任何位置包含文字anvil的值,而

不論它之前或之後出現什麼字元。

萬用字元也可以出現在搜尋模式的中間,雖然這樣做不太有用。下面

的例子找出以 s 起頭以 e 結尾的所有產品:

注意尾空格 尾空格可能會干擾萬用字元匹配。例如,在儲存詞

anvil 時,如果它 後面有乙個或多個空格,則子句 where

prod_name like '%anvil' 將不會匹配它們,因為在最後的 l

後有多餘的字元。解決這個問題的乙個簡單的辦法是在搜尋模

式最後附加乙個 % 。乙個更好的辦法是使用函式(第11章將會

介紹)去掉首尾空格

注意null 雖然似乎 % 萬用字元可以匹配任何東西,但有乙個例

外,即 null 。即使是 where prod_name like '%' 也不能匹配

用值 null 作為產品名的行

另乙個有用的萬用字元是下劃線( _ )。下劃線的用途與 % 一樣,但下劃

線只匹配單個字元而不是多個字元

此 where 子句中的搜尋模式給出了後面跟有文字的兩個通配

符。結果只顯示匹配搜尋模式的行:第一行中下劃線匹配 1 ,

第二行中匹配 2 。 .5 ton anvil 產品沒有匹配,因為搜尋模式要求匹配兩

個萬用字元而不是乙個。對照一下,下面的 select 語句使用 % 萬用字元,返回

三行產品:

與 % 能匹配0個字元不一樣,_總是匹配乙個字元,不能多也不能少

正如所見,mysql的萬用字元很有用。但這種功能是有代價的:通配

符搜尋的處理一般要比前面討論的其他搜尋所花時間更長。這裡給出一

些使用萬用字元要記住的技巧。

本章介紹了什麼是萬用字元以及如何在 where 子句中使用sql萬用字元,

並且還說明了萬用字元應該細心使用,不要過度使用。

mysql必知必會 mysql必知必會(四)

十四 理解子查詢 1 通過子查詢過濾 這本書在所有的章節都關連到了資料庫表,訂單資料是儲存在兩個表中,orders表儲存著 訂單號碼 顧客id和訂單日期。個人的訂單列表關連著orderitems表,訂單表沒有儲存顧客資訊,它只是儲存著顧客id,這實際的顧客資訊是儲存在customers表中。現在假設...

mysql的必知必會 mysql 必知必會 筆記

好久沒有寫了。1 show columns from table 等同於describe table顯示的是表的結構。而select from table 則顯示的是整個表中插入的資料。2 select distinct c1,c2 from table除非列不相同,否則所有行將被檢索出來,即不能對...

mysql必知必會

一周了,總想寫點什麼,有的時候進步真的很難在一周顯示出來,週三的時候,我跟我的領導說,好快啊,又週三了,不知不覺,他說是啊,現在對於他來說,有時候他過一天可能跟我過一周的感覺差不多,每天都在忙,時間過的特別快,也沒有感覺做出來點什麼,當然實際肯定是怎麼做了一些東西的,是否我以後也會如此呢?說說技術把...