MySQL數據庫——用通配符和正則表達式過濾數據(一)

前面我們介紹過關於如何過濾數據,但是那些都是對已經確定的值進行過濾的。在實際生活中,我們很可能需要類似這樣的搜索,列出文本中包含關鍵字“Freeman”的語句。
顯然,我們用之前的簡單操作肯定是不行地,必須使用通配符!

通配符:用來匹配值一部分的特殊字符

搜索模式: 由字面值、通配符或兩者組合成的搜索條件。

通配符本身實際是SQL的WHERE子句中有特殊漢子的字符,在搜索子句中使用通配符,必須使用LIKE操作符。LIKE指示MySQL,後跟的搜索模式(我喜歡叫搜索樣式),利用通配符而不是直接相等匹配來比較。

謂詞:操作符何時不是操作符?答案是在它做謂詞時。從技術上說,LIKE是謂詞而不是操作符。雖然最終結果相同,但是應該對這個術語瞭解,SQL文檔會提到。

part 1 百分號通配符使用

SELECT users.user_name, users.user_age FROM users WHERE users.user_name LIKE '%一東'

這個例子使用了搜索模式 ‘%一東’ 檢索任何後面跟着一東的詞。 注意:雖然SQL語句不區分大小寫,但是搜索模式是區分的 %huang 和 222HUANG 將不會匹配!

通配符可在搜索模式中任意位置使用,並且可以使用多個通配符。

SELECT users.user_name, users.user_age FROM users WHERE users.user_name LIKE '%一%'

搜索模式 “%一%” 將匹配任何包含一 的文本。
要注意到,除了一個或多個字符外,%還能匹配0個字符。%代表搜索模式中給定位置的0個、1個或多個字符 。

另外!還有要注意尾空格:尾空格可能會干擾通配符的匹配。例如,在保存詞anvil時,如果它後面還有一個或多個空格,則子句WHERE prod_name LIKE ‘%anvil’ 將不會匹配,因爲在後面有多餘的字符。
解決這個問題的好辦法是,將搜索模式寫成這樣’%anvil%’,還有更好的方法,是使用函數,我們以後會說到。

part 2 下劃線(_)通配符

另一個有用的通配符是下劃線(_)。下劃線的用途和 % 一樣 , 但是下劃線只匹配單個字符而不是多個字符 。 如下:

SELECT users.user_name, users.user_age FROM users WHERE users.user_name LIKE '_一_'

第一個下劃線 會 匹配 黃 第二個下劃線 會匹配 東 。
和%能匹配0或多個字符不一樣,下劃線智能匹配一個,不能多也不能少。

part 3 通配符使用技巧

通配符搜索的處理一般要比前面討論的其他搜索所話時間更長 。所以:
1.不要過度使用通配符。如果通過其他形式能達到目的,應該優先其他形式。
2.確實需要使用通配符的時候,除非真的有必要,否則不要吧通配符放到搜索模式的開始處。因爲把通配符放到搜索模式的開始處,搜索起來是最慢的!
3.仔細注意通配符的位置,否則可能有意想不到的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章