MySQL之正则表达式查询

使用REGEXP关键字指定正则表达式的字符匹配模式。

1 以特定字符或字符串开头 ‘^’

mysql> SELECT * FROM fruits WHERE f_name REGEXP '^a';
+------+--------+-------+
| f_id | f_name | price |
+------+--------+-------+
|  100 | apple  |     5 |
+------+--------+-------+
1 row in set (0.00 sec)
mysql> SELECT * FROM fruits WHERE f_name REGEXP '^ba';
+------+--------+-------+
| f_id | f_name | price |
+------+--------+-------+
|  103 | banana |    12 |
+------+--------+-------+
1 row in set (0.00 sec)

2 以特定字符或字符串结尾 ‘$’

mysql> SELECT * FROM fruits WHERE f_name REGEXP 'n$';
+------+------------+-------+
| f_id | f_name     | price |
+------+------------+-------+
|  102 | melon      |     8 |
|  106 | watermelon |    20 |
+------+------------+-------+
2 rows in set (0.00 sec)
mysql> SELECT * FROM fruits WHERE f_name REGEXP 'le$';
+------+--------+-------+
| f_id | f_name | price |
+------+--------+-------+
|  100 | apple  |     5 |
+------+--------+-------+
1 row in set (0.00 sec)

3 替代字符串中任意一个字符 ‘.’

mysql> SELECT * FROM fruits WHERE f_name REGEXP 'e.o';
+------+------------+-------+
| f_id | f_name     | price |
+------+------------+-------+
|  102 | melon      |     8 |
|  106 | watermelon |    20 |
+------+------------+-------+
2 rows in set (0.00 sec)


4 匹配多个字符 ‘*‘和’+’

  • *:是前面的字符出现任意次,包括0.
mysql> SELECT * FROM fruits WHERE f_name REGEXP '^ap*';
+------+--------+-------+
| f_id | f_name | price |
+------+--------+-------+
|  100 | apple  |     5 |
|  110 | alpp   |    10 |
+------+--------+-------+
2 rows in set (0.00 sec)
  • +:表示匹配前面的字符至少一次。
mysql> SELECT * FROM fruits WHERE f_name REGEXP '^ap+';
+------+--------+-------+
| f_id | f_name | price |
+------+--------+-------+
|  100 | apple  |     5 |
+------+--------+-------+
1 row in set (0.00 sec)

5 匹配指定字符串

匹配多个时使用’|'隔开

mysql> SELECT * FROM fruits WHERE f_name REGEXP 'ap|on';
+------+------------+-------+
| f_id | f_name     | price |
+------+------------+-------+
|  100 | apple      |     5 |
|  102 | melon      |     8 |
|  106 | watermelon |    20 |
+------+------------+-------+
3 rows in set (0.00 sec)

6 匹配指定字符中的任意一个 ‘[]’

mysql> SELECT * FROM fruits WHERE f_name REGEXP '[on]';//匹配有o或者有n的字符串
+------+------------+-------+
| f_id | f_name     | price |
+------+------------+-------+
|  101 | orange     |    10 |
|  102 | melon      |     8 |
|  103 | banana     |    12 |
|  104 | mango      |    20 |
|  106 | watermelon |    20 |
+------+------------+-------+
5 rows in set (0.00 sec)

[456] :为匹配有4或5或6的,也可以写成[4-6],[a-z]即为所有字母。


7 匹配指定字符以外的字符 ‘[^字符集]’

[^xyz] :只要字符中有非xyz即可,如axyz。
[^xyz]$ :只要结尾字符不是xyz即可。

mysql> SELECT * FROM fruits WHERE f_name REGEXP '[^ON]$';
+------+--------+-------+
| f_id | f_name | price |
+------+--------+-------+
|  100 | apple  |     5 |
|  101 | orange |    10 |
|  103 | banana |    12 |
|  105 | water  |     5 |
|  107 | pear   |  NULL |
+------+--------+-------+
5 rows in set (0.00 sec)

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

a{n,} :a至少连续出现n次
a{n,m} :a至少连续出现n次,少于m次
abc{n,} :ab后至少有n个c
(abc){n,} :至少有n个abc

mysql> SELECT * FROM fruits WHERE f_name REGEXP 'an{1,2}';
+------+--------+-------+
| f_id | f_name | price |
+------+--------+-------+
|  101 | orange |    10 |
|  103 | banana |    12 |
|  104 | mango  |    20 |
+------+--------+-------+
3 rows in set (0.00 sec)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值