mysql正则查询

mysql常用的字符匹配列表

选项说明例子
^匹配文本的开始字符^b:匹配以字母b开头的字符串
$匹配文本的结束字符st$:匹配以st结尾的字符串
.匹配任何单字字符b.t:匹配b与t之间任意一个字符
*匹配零个或者多个在它前面的字符f*n :匹配n前面零个或者多个f字符的字符串
+匹配前面的字符一次或者多次ba+:匹配以b 开头的后面紧跟一个或者多个a的字符串
<字符串>匹配包含指定字符串的文本bc:匹配包含’bc’的字符串
[字符集合]匹配字符集合中的任一个字符'[x,y]:'匹配x或者y
[^]匹配不在括号内的任意一个字符‘[^abc]:’ 匹配任何一个不包含a,b,c的字符串
字符串{n,}匹配前面的字符串至少n次b{2}:匹配至少2个或者更多的b
字符串{n,m}匹配前面的字符串至少n次,至多m次b{2,4}:匹配最少两个最多4个b字符的字符串

关于*匹配
只是匹配*前的字符,有0个或者多个,也就是在*号的后面的字符为基准,找前面可能不能找到要匹配的字符,但是要找到要匹配的字符的前面的字符(也就是匹配0次。

mysql> select 'fxnsjknefasanjjiwwiianx' regexp 'fasaj*n';
+--------------------------------------------+
| 'fxnsjknefasanjjiwwiianx' regexp 'fasaj*n' |
+--------------------------------------------+
|                                          1 |
+--------------------------------------------+

要么匹配多次。

mysql> select 'fxnsjknefasajjjnjjiwwiianx' regexp 'fasaj*n';
+-----------------------------------------------+
| 'fxnsjknefasajjjnjjiwwiianx' regexp 'fasaj*n' |
+-----------------------------------------------+
|                                             1 |
+-----------------------------------------------+
mysql> select 'fxnsjknefasajjajnjjiwwiianx' regexp 'fasaj*n';
+------------------------------------------------+
| 'fxnsjknefasajjajnjjiwwiianx' regexp 'fasaj*n' |
+------------------------------------------------+
|                                              0 |
+------------------------------------------------+

语法为regexp加匹配模式。

开头匹配

select * from student where Sid regexp '^张';

替代任意一个字符

select * from student where Sname regexp 'a.g';

匹配多个字符

select * from fruits where f_name regexp '^ba*';

like也可以进行字符的匹配,但是它匹配的字符串如果在文本中间出现,则找不到它,不会返回相应的行。例如:

mysql> select * from course where cname regexp 's.n';
+-----------+-------------------+------------+---------+
| Cno       | Cname             | Pre_Cno    | Credits |
+-----------+-------------------+------------+---------+
| 100127865 | DB_csdn设置           | 1939029898 |       2 |
| 100127869 | DB_csdn设置与拍摄           | 1939029898 |       2 |
+-----------+-------------------+------------+---------+
2 rows in set (0.00 sec)
mysql> select * from course where cname like 's.n';
Empty set (0.00 sec)

匹配指定字符的任意一个

匹配水果表的名字字段有o或者t的水果的信息。

select * from fruits where f_name regexp '[ot]';

同理,匹配任意不在就用[^字符]

select * from fruits where f_id regexp '[a-e1-2]';

指定出现的次数
查询在水果表中名字至少存在两个x的水果的信息。

select * from fruits where f_name regexp 'x{2,}';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值