Mysql模式匹配兩種方法

  • 1、使用LIKE或NOT LIKE比較操做符

使用 "_" 匹配任何單個字符,而 "%" 匹配任意數量的字符(包括零字符);mysql

例如:正則表達式

  1.要想找出以「b」開頭的名字:sql

mysql> SELECT * FROM pet WHERE name LIKE 'b%';


 2.要想找出以「fy」結尾的名字:
mysql> SELECT * FROM pet WHERE name LIKE '%fy';
 
 3.要想找出包含「w」的名字:
mysql> SELECT * FROM pet WHERE name LIKE '%w%';

 

  4.要想找出正好包含5個字符的名字,使用「_」模式字符:測試

mysql> SELECT * FROM pet WHERE name LIKE '_____';

 

  • 2、使用REGEXP和NOT REGEXP操做符

⑴ "." 匹配任何單個的字符;spa

⑵ 字符類「[...]」匹配在方括號內的任何字符。例如,「[abc]」匹配「a」「b」「c」。爲了命名字符的範圍,使用一個「-」。「[a-z]」匹配任何字母,而「[0-9]」匹配任何數字。code

⑶ 「 * 」匹配零個或多個在它前面的字符。例如,「x*」匹配任何數量的「x」字符,「[0-9]*」匹配任何數量的數字,而「.*」匹配任何數量的任何字符。blog

⑷ 爲了定位一個模式以便它必須匹配被測試值的開始或結尾,在模式開始處使用「^」在模式的結尾用「$」字符串

  1.爲了找出以「b」開頭的名字,使用「^」匹配名字的開始:class

mysql> SELECT * FROM pet WHERE name REGEXP '^b';

 

  2.若是你想強制使REGEXP比較區分大小寫,使用BINARY關鍵字使其中一個字符串變爲二進制字符串。該查詢只匹配名稱首字母的小寫‘b’:二進制

mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b';

 

  3.爲了找出以「fy」結尾的名字,使用「$」匹配名字的結尾:

mysql> SELECT * FROM pet WHERE name REGEXP 'fy$';

 

  4.爲了找出包含一個「w」的名字,使用如下查詢:

mysql> SELECT * FROM pet WHERE name REGEXP 'w';

 

  5.爲了找出包含正好5個字符的名字,使用「^」「$」匹配名字的開始和結尾,和5個「.」實例在二者之間:

mysql> SELECT * FROM pet WHERE name REGEXP '^.....$';

  你也能夠使用「{n}」「重複n次」操做符重寫前面的查詢:

mysql> SELECT * FROM pet WHERE name REGEXP '^.{5}$';

 

  • 區別
  1. LIKE匹配的是整個字段的值,好比,不使用 "_" 或 "%" 的話,使用上面的sql查詢包含一個 "w" 的名字,LIKE "w" 是查不出來的,而REGEXP能夠;
  2. LIKE只能使用 "_" 和 "%" ,不支持正則表達式。
相關文章
相關標籤/搜索