mysql 中查询语句表达式REGEXP用法

来源:互联网 发布:算法工程师主要做什么 编辑:程序博客网 时间:2024/05/29 10:08

mysql 中用REGEXP字符来匹配表达式
用法: 属性名
有如下表:
table employee
+—–+——+———–+——+——+——————–+
| num | d_id | name | age | sex | homeaddress |
+—–+——+———–+——+——+——————–+
| 1 | 1001 | 张三 | 26 | 男 | 北京海淀区 |
| 2 | 1001 | 李四 | 24 | 女 | 北京昌平区 |
| 3 | 1002 | 王五 | 25 | 男 | 湖南长沙市 |
| 4 | 1004 | Aric | 15 | 男 | England |
| 5 | 1999 | 李三思 | 17 | 男 | 海南省三亚市 |
+—–+——+———–+——+——+——————–+
1.查以特定字符或字符串开头的记录:
使用”^”

select * from employee where  homeaddress REGEXP '^北京';

查询结果如下:

+—–+——+——–+——+——+—————–+
| num | d_id | name | age | sex | homeaddress |
+—–+——+——–+——+——+—————–+
| 1 | 1001 | 张三 | 26 | 男 | 北京海淀区 |
| 2 | 1001 | 李四 | 24 | 女 | 北京昌平区 |
+—–+——+——–+——+——+—————–+
2.查询以特定字符或字符串结尾的记录:
用法:’字符或字符串$’

select * from employee where homeaddress regexp '市$';

结果如下:
+—–+——+———–+——+——+——————–+
| num | d_id | name | age | sex | homeaddress |
+—–+——+———–+——+——+——————–+
| 3 | 1002 | 王五 | 25 | 男 | 湖南长沙市 |
| 5 | 1999 | 李三思 | 17 | 男 | 海南省三亚市 |
+—–+——+———–+——+——+——————–+
3.用‘.’可以代替字符串中的任意字符:
用法如下:

select * from employee where name regexp '.五';
select * from employee where name regexp '李..思';#经过摸索,我发现在中间的汉,需要用两个.代替。#3.1.插入提条记录如下:insert into employee values(null,1898,'lily','女','HaiNanSanya');#3.2.查询lilyselect * from employee where name regexp 'l.ly';

3.1.结果如下:
+—–+——+——–+——+——+—————–+
| num | d_id | name | age | sex | homeaddress |
+—–+——+——–+——+——+—————–+
| 3 | 1002 | 王五 | 25 | 男 | 湖南长沙市 |
+—–+——+——–+——+——+—————–+
1 row in set (0.00 sec)
3.2.
+—–+——+——+——+——+————-+
| num | d_id | name | age | sex | homeaddress |
+—–+——+——+——+——+————-+
| 6 | 1898 | lily | 18 | 女 | HaiNanSanya |
+—–+——+——+——+——+————-+
1 row in set (0.00 sec)
4.匹配指定字符串中任意一个
用法:[ ]

select * from employee where name regexp '[五l三]';

结果:+—–+——+———–+——+——+——————–+
| num | d_id | name | age | sex | homeaddress |
+—–+——+———–+——+——+——————–+
| 1 | 1001 | 张三 | 26 | 男 | 北京海淀区 |
| 3 | 1002 | 王五 | 25 | 男 | 湖南长沙市 |
| 5 | 1999 | 李三思 | 17 | 男 | 海南省三亚市 |
| 6 | 1898 | lily | 18 | 女 | HaiNanSanya |
+—–+——+———–+——+——+——————–+
4 rows in set (0.00 sec)

5.搜索制定区间
用法:[]

select * from employee where num regexp '[1-5]';#查找num在1-5之间的记录

结果如下:
+—–+——+———–+——+——+——————–+
| num | d_id | name | age | sex | homeaddress |
+—–+——+———–+——+——+——————–+
| 1 | 1001 | 张三 | 26 | 男 | 北京海淀区 |
| 2 | 1001 | 李四 | 24 | 女 | 北京昌平区 |
| 3 | 1002 | 王五 | 25 | 男 | 湖南长沙市 |
| 4 | 1004 | Aric | 15 | 男 | England |
| 5 | 1999 | 李三思 | 17 | 男 | 海南省三亚市 |
+—–+——+———–+——+——+——————–+
5 rows in set (0.01 sec)
6.搜索制定区间之外的记录:
用法:[^1-5]

select * from employee where num regexp '[^1-5]';

结果如下:
+—–+——+——+——+——+————-+
| num | d_id | name | age | sex | homeaddress |
+—–+——+——+——+——+————-+
| 6 | 1898 | lily | 18 | 女 | HaiNanSanya |
+—–+——+——+——+——+————-+
7.查询指定字符串

#查询homeaddress在三亚市的记录select * from employee where homeaddress regexp '三亚市';

结果如下:
+—–+——+———–+——+——+——————–+
| num | d_id | name | age | sex | homeaddress |
+—–+——+———–+——+——+——————–+
| 5 | 1999 | 李三思 | 17 | 男 | 海南省三亚市 |
+—–+——+———–+——+——+——————–+
1 row in set (0.01 sec)

#查询三亚、长沙、昌平中的任意一个select * from employee where homeadress regexp '三亚|长沙|昌平';

结果如下:
+—–+——+———–+——+——+——————–+
| num | d_id | name | age | sex | homeaddress |
+—–+——+———–+——+——+——————–+
| 2 | 1001 | 李四 | 24 | 女 | 北京昌平区 |
| 3 | 1002 | 王五 | 25 | 男 | 湖南长沙市 |
| 5 | 1999 | 李三思 | 17 | 男 | 海南省三亚市 |
+—–+——+———–+——+——+——————–+
3 rows in set (0.00 sec)
8.用×和+来匹配多个字符:

select * from employee where name regexp 'l*y';#表示查寻name 下字母y前面有0个或多个l 

+—–+——+——+——+——+————-+
| num | d_id | name | age | sex | homeaddress |
+—–+——+——+——+——+————-+
| 6 | 1898 | lily | 18 | 女 | HaiNanSanya |
+—–+——+——+——+——+————-+
1 row in set (0.01 sec)

select * from employee where name regexp 'l+y';#表示查询字母y前面至少有一个l

结果:
+—–+——+——+——+——+————-+
| num | d_id | name | age | sex | homeaddress |
+—–+——+——+——+——+————-+
| 6 | 1898 | lily | 18 | 女 | HaiNanSanya |
+—–+——+——+——+——+————-+
1 row in set (0.01 sec)

select * from employee where name regexp 'a+y';#表示查询字母y前面至少有一个a

结果:
mysql> select * from employee where name regexp ‘a+y’;
Empty set (0.00 sec)

9.按照指定字符出现的次数 查询

#先插一条记录insert into employee values (null,1880,'aaaccsd',28,'女','America');#查询如下:select * from employee where name regexp 'a{3}';

结果:
+—–+——+———+——+——+————-+
| num | d_id | name | age | sex | homeaddress |
+—–+——+———+——+——+————-+
| 7 | 1880 | aaaccsd | 28 | 女 | America |
+—–+——+———+——+——+————-+

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 地税网上申报密码忘记了怎么办 国税银行缴款凭证丢失了怎么办 税务局让法人缴税法人不缴会怎么办 税盘忘记清卡怎么办 7年没申报地税怎么办 已报税忘了清卡怎么办 国税报税密码忘了怎么办 有一个月忘报税了怎么办 地税报税密码忘了怎么办 电子税务账号忘记了怎么办 国税ukey密码忘了怎么办 电子税务局显示版本低怎么办 电子税务局2.0不显示打印怎么办 青海建筑三级资质初申是怎么办 欠钱败诉没钱还怎么办 学校退款卡丢了怎么办 学校发的卡掉了怎么办 汇款回执单丢了怎么办 大学交学费的卡丢了怎么办 交学费的银行卡丢了怎么办 学校补助卡丢了怎么办 学校交学费的卡丢了怎么办 采购零星材料无发票怎么办 租房合同弄丢了怎么办 买房的合同丢了怎么办 押金的收据丢了怎么办 房东的合同掉了怎么办 个人档案里单位没有放合同怎么办 签的合同掉了怎么办 一方合同弄丢了怎么办 合同丢了怎么办如何补 签了定金合同对方违约怎么办 医学出生证明丢了怎么办 易通行出站未刷怎么办 炭烧酸奶过期了怎么办 西安建行etc坏了怎么办 电机在设备壳体中拔不出来怎么办 公司变更股东不能亲临现场怎么办? 公司股东变更老股东不签字怎么办 公司变更地址股东不签字怎么办 公司变更股份股东不签字怎么办