1、MySQL中使用通配符檢索數據庫,之外還可以使用正則表達式來檢索數據。
使用通配符 ‘_’ 和 '%'的區別如下, 使用通配符的技巧:一般的來說 通配符可以處理數據,但是消耗內存較大, 所以在使用的時候要注意技巧。
- 不要過度的使用通配符 如果其他操作系統能夠達到形同的效果,使用其他的方法。
- 不要將通配符使用在搜索模式的開始處,不然搜索很緩慢。
- 注意通配符的位置,放錯地方會檢索的數據完全的不同
2、使用正則表達式進行搜索數據庫
正則表達式 是用來匹配文本的特殊的字符串,這里正則表達式的語法不再重復(MySQL僅支持多數正則表達式實現的一個很小的子集)
REGEXP 類似 之前通配符的 like
下面的正則表達式中的 . 表示任意一個字符
下面比較下like 和REGEXP 之間的差別,通過語句之間的差異來比對:從下面的兩條執行的語句來看,第一條不會反悔結果,但是使用正則表達的會返回結果。 因為LIKE 匹配的是整個列,如果被匹配的文本在列值中出現,like將不會找到,相應的行也不會返回結構除非使用通配符。 但是REGEXP 在列值內進行匹配,如果匹配的文本在列值中出現,REGEXP則會找打,相應的行會被返回。
除此之為傲REGEXP 也可以像like一樣匹配整個列值, 可以使用 ^ 和$ 定位符即可。 在MySQL中的正則表達式不區分大小寫,如果要區分大小寫可以使用關鍵字 BINARY eg: where prod_name REGEXP BINARY 'JetPack .000' 。
其二 OR的匹配: 搜索兩個串之一或者另一個串,使用 | ,| 為正則表達式OR的操作符,表示匹配其中的之一。1000,2000都匹配所有都返回。從功能是上看,類似於select語句中使用的or 語句。
匹配幾個字符之一,可以使用 [] 倆進行限制。【123】表示定義一組字符,他的意思是匹配1,2,或者3 ,因此1 ton , 2ton ,返回。
為了簡化這種類型的集合,可以使用定義一個范圍,[0123456789] 表示匹配0-9之間的數字,或者使用[0-9]功能類似 ,或者也可以是字母[a-z]
匹配特殊字符: 匹配 . 其中 .表示任意字符,所有與之匹配的所有字符都被檢索出來
為了匹配特字符,我們使用\\ 為前導 符號, \\ -表示查找 -, \\. 表示查找 . 下面反饋的數據才是我們正在期望輸出的,這種處理方式叫做轉義。除此之外還有 其他的表達式。
\\f 表示換頁 \\n 表示換行 \\r 表示回車 \\t 表示制表符 \\v 表示縱向制表符
匹配字符類, MySQL中定義了字符類。這個下去自己查找。
匹配多個實例: 目前為止正則表達式視圖匹配單次出現,如果存在一個匹配該行被檢索出來,如果沒有則檢索不出任何行,但有時候需要對匹配的數目進行嚴格的控制,比方說你可能需要查找所有的數字,不管包含多少數字。
[:digit:]匹配任意數字,因為他是數字的一個集合。{4} 表示確切的要求他前面的字符出現4次 ,所以 [[:digig:]]{4} 匹配連載一起的任意四位數字
但是在編寫正則表達式的時候每一種過濾都可以使用不同的方法來實現。
最后看 定位符的作用。為了匹配特定位置的文本,需要使用定位符:
^ 表示文本的開始位置 $ 表示文本的結尾位置 [[:<:]] 詞的開始 [[:>:]] 詞的結尾位置