MySQL学习笔记.查询数据3

正则表达式查询

查询特定字符或字符串开头的记录

字符‘^’匹配以特定字符或字符串开头的文本
1.查询以x开头的记录

mysql> SELECT *
    -> FROM fruits
    -> WHERE f_name REGEXP '^x';
+------+------+---------+---------+
| f_id | s_id | f_name  | f_price |
+------+------+---------+---------+
| b5   |  107 | xxxx    |    3.60 |
| m2   |  105 | xbabay  |    2.60 |
| t4   |  107 | xbababa |    3.60 |
+------+------+---------+---------+
3 rows in set (0.00 sec)

2查询以xx开头的记录

mysql> SELECT *
    -> FROM fruits
    -> WHERE f_name REGEXP '^xx';
+------+------+--------+---------+
| f_id | s_id | f_name | f_price |
+------+------+--------+---------+
| b5   |  107 | xxxx   |    3.60 |
+------+------+--------+---------+
1 row in set (0.00 sec)

查询特定字符或字符串结尾的记录

字符$匹配以特定字符或字符串结尾的文本
1.查询以e结尾的记录

mysql> SELECT *
    -> FROM fruits
    -> WHERE f_name REGEXP 'e$';
+------+------+--------+---------+
| f_id | s_id | f_name | f_price |
+------+------+--------+---------+
| a1   |  101 | apple  |    5.20 |
| bs1  |  102 | orange |   11.20 |
| t2   |  102 | grape  |    5.30 |
+------+------+--------+---------+
3 rows in set (0.00 sec)

2.查询以go结尾的记录

mysql> SELECT *
    -> FROM fruits
    -> WHERE f_name REGEXP 'go$';
+------+------+--------+---------+
| f_id | s_id | f_name | f_price |
+------+------+--------+---------+
| m1   |  106 | mngo   |   15.70 |
+------+------+--------+---------+
1 row in set (0.00 sec)

用符号.来代替字符串中任一字符

字符.匹配任意一个字符
1.查询包含r某y的记录

mysql> SELECT *
    -> FROM fruits
    -> WHERE f_name REGEXP 'r.y';
+------+------+------------+---------+
| f_id | s_id | f_name     | f_price |
+------+------+------------+---------+
| b1   |  101 | blackberry |   10.20 |
| b2   |  104 | berry      |    7.60 |
| c0   |  101 | cherry     |    3.20 |
+------+------+------------+---------+
3 rows in set (0.00 sec)

用符号“*”和“+”来匹配多个字符

“*”可匹配前面多个字符,“+”至少匹配前面字符一次

mysql> SELECT *
    -> FROM fruits
    -> WHERE f_name REGEXP '^mn*';
+------+------+--------+---------+
| f_id | s_id | f_name | f_price |
+------+------+--------+---------+
| bs2  |  105 | melon  |    8.20 |
| m1   |  106 | mngo   |   15.70 |
+------+------+--------+---------+
2 rows in set (0.00 sec)
mysql> SELECT *
    -> FROM fruits
    -> WHERE f_name REGEXP '^mn+';
+------+------+--------+---------+
| f_id | s_id | f_name | f_price |
+------+------+--------+---------+
| m1   |  106 | mngo   |   15.70 |
+------+------+--------+---------+
1 row in set (0.00 sec)

匹配指定字符串

正则表达式可以匹配指定的字符串,只要这个字符串在查询文本中即可,如果要匹配多个字符串,多个字符串之间使用分隔符"|"隔开

1.查询包含字符串“ge”的记录

mysql> SELECT *
    -> FROM fruits
    -> WHERE f_name REGEXP 'ge';
+------+------+--------+---------+
| f_id | s_id | f_name | f_price |
+------+------+--------+---------+
| bs1  |  102 | orange |   11.20 |
+------+------+--------+---------+
1 row in set (0.00 sec)

2.查询包含“ge”或者"na"的记录

mysql> SELECT *
    -> FROM fruits
    -> WHERE f_name REGEXP 'ge|na';
+------+------+--------+---------+
| f_id | s_id | f_name | f_price |
+------+------+--------+---------+
| bs1  |  102 | orange |   11.20 |
| t1   |  102 | banana |   10.30 |
+------+------+--------+---------+
2 rows in set (0.00 sec)

匹配指定字符中的任意一个

方括号“[]”指定一个字符集合,只匹配其中任何一个字符。
1.查询包含字母“a”或者"e"的记录

mysql> SELECT *
    -> FROM fruits
    -> WHERE f_name REGEXP '[ae]';
+------+------+------------+---------+
| f_id | s_id | f_name     | f_price |
+------+------+------------+---------+
| a1   |  101 | apple      |    5.20 |
| a2   |  103 | apricot    |    2.20 |
| b1   |  101 | blackberry |   10.20 |
| b2   |  104 | berry      |    7.60 |
| bs1  |  102 | orange     |   11.20 |
| bs2  |  105 | melon      |    8.20 |
| c0   |  101 | cherry     |    3.20 |
| m2   |  105 | xbabay     |    2.60 |
| t1   |  102 | banana     |   10.30 |
| t2   |  102 | grape      |    5.30 |
| t4   |  107 | xbababa    |    3.60 |
+------+------+------------+---------+
11 rows in set (0.00 sec)

使用{n,}或者{n,m}来指定字符串出现的次数

查询至少连续出现2次r的记录

mysql> SELECT *
    -> FROM fruits
    -> WHERE f_name REGEXP 'r{2,}';
+------+------+------------+---------+
| f_id | s_id | f_name     | f_price |
+------+------+------------+---------+
| b1   |  101 | blackberry |   10.20 |
| b2   |  104 | berry      |    7.60 |
| c0   |  101 | cherry     |    3.20 |
+------+------+------------+---------+
3 rows in set (0.00 sec)

匹配指定字符以外的字符

“[^字符集合]”匹配不在指定集合中的任何字符
匹配非101-104的记录

mysql> SELECT *
    -> FROM fruits
    -> WHERE s_id REGEXP '[^101-104]';
+------+------+---------+---------+
| f_id | s_id | f_name  | f_price |
+------+------+---------+---------+
| a2   |  103 | apricot |    2.20 |
| b5   |  107 | xxxx    |    3.60 |
| bs1  |  102 | orange  |   11.20 |
| bs2  |  105 | melon   |    8.20 |
| m1   |  106 | mngo    |   15.70 |
| m2   |  105 | xbabay  |    2.60 |
| t1   |  102 | banana  |   10.30 |
| t2   |  102 | grape   |    5.30 |
| t4   |  107 | xbababa |    3.60 |
+------+------+---------+---------+
9 rows in set (0.00 sec)

猜你喜欢

转载自blog.csdn.net/qq_44862120/article/details/108980932