標籤:
所謂正在運算式,就是通過模式去匹配一類字串。MySQL支援的模式字元如下表所示:
MySQL支援的模式字元
| 模式字元 |
含義 |
| ^ |
匹配字串的開始部分 |
| $ |
匹配字串的結束部分 |
| . |
匹配字串中的任意一個字元 |
| [字元集合] |
匹配字元集合中的任意一個字元 |
| [^字元集合] |
匹配字元集合外的任意一個字元 |
| str1|str2|str3 |
匹配str1,sr2和str3中的任意一個字串 |
| * |
匹配字元,包含0個和1個 |
| + |
匹配字元,包含1個 |
| 字串{N} |
字串出現n次 |
| 字串{m,n} |
字串出現至少M次,最多N次 |
在模式比對的時候,如果相符則返回1,否則返回0。
1. 執行帶有"^"模式字元的SQL。
SELECT ‘cjgong‘ REGEXP ‘^c‘ 特定字元開頭,‘cjgongcjgong‘ REGEXP ‘^cjgong‘ 特定字串開頭;
執行SQL,結果如下所示:
2. 執行帶有"$"模式字元的SQL。
SELECT ‘cjgong‘ REGEXP ‘g$‘ 特定字元結尾,‘cjgongcjgong‘ REGEXP ‘cjgong$‘ 特定字串結尾;
執行SQL,結果如下所示:
3. 執行帶有"."模式字元的SQL。
SELECT ‘cjgong‘ REGEXP ‘^c....g$‘ 匹配4個任一字元
執行SQL,結果如下所示:
4. 執行帶有"[]"和"[^]"模式字元的SQL。
SELECT ‘cjgong‘ REGEXP ‘[abc]‘ 指定字串字元,‘cjgong‘ REGEXP ‘[a-zA-Z]‘ 指定字串中的集合區間,
‘cjgong‘ REGEXP ‘[^abc]‘ 指定字元外字元,‘cjgong‘ REGEXP ‘[^a-zA-Z0-9]‘ 指定字元外集合區間;
執行SQL,結果如下所示:
5. 執行帶有"*"和"+"模式字元的SQL。
SELECT ‘cjgong‘ REGEXP ‘a*g‘,‘cjgong‘ REGEXP ‘a+g‘;
通過模式字元"*"和"+"可以匹配字元g之前是否有多個字元a,不過前者表示0個或任意個字元,而後者至少表示一個字元,因此顯示結果分別為1和0。
執行SQL,結果如下所示:
6. 執行帶有"|"模式字元的SQL。
SELECT ‘cjgong‘ REGEXP ‘cjg‘ 指定單個字元,‘cjgong‘ REGEXP ‘cjc|cjgc‘ 指定多個字元;
執行SQL,結果如下所示:
7. 執行帶有"{M}"和{M,N}模式字元的SQL。
SELECT ‘cccjgong‘ REGEXP ‘c{3}‘ 匹配3個c,‘cccjgongg‘ REGEXP ‘g{2}‘ 匹配2個g,‘cgong‘ REGEXP ‘cj{1,2}‘ 至少1個最多2個,‘cjcjgong‘ REGEXP ‘cj{1,2}‘ 至少1個最多2個;
c{3}表示字串c連續出現3次,cj{1,2}表示字串cj至少出現一次最多串連出現3次。
執行SQL,結果如下所示:
Regex的功能非常強大,使用Regex可以靈活地設定字串匹配的條件。
mysql的Regex