mysql regexp不支持_MySQL REGEXP正则表达式
首先说下LIKE命令都涉及到的通配符:
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist]或者[!charlist] 不在字符列中的任何单一字符
其中搭配以上通配符可以让LIKE命令实现多种技巧:
1、LIKE'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。
2、LIKE'%inger' 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。
3、LIKE'%en%' 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。
4、LIKE'_heryl' 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。
5、LIKE'[CK]ars[eo]n' 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。
6、LIKE'[M-Z]inger' 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称(如 Ringer)。
7、LIKE'M[^c]%' 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如MacFeather)。
不过,MySQL 、SQLite 只支持% 和_ 通配符,不支持[^charlist] 或[!charlist] 通配符( MS Access 支持,微软 office 对通配符一直支持良好,但微软有时候的通配符不支持 %,而是 *,具体看对应软件说明)。通配符和正则不是一回事。
MySQL 和 SQLite 会把 like '[xxx]yyy' 的中括号当成普通字符,而不是通配符。
比如:
select * from persons WHERE City LIKE '[b]eijing'
将查出 city 为 [b]eijing 的行,而不是 city 为 beijing 的行。
MySQL 中要完成 [^charlist] 或 [!charlist] 通配符的查询效果,需要通过正则表达式来完成。
select * from persons WHERE City REGEXP '[b]eijing' SQLite不支持Regexp正则方法。
(^)字符
匹配字符串的开始位置,如“^a”表示以字母a开头的字符串。
mysql>SELECT name FROM person_tblWHERE name REGEXP "^st";
($)字符
匹配字符串的结束位置,如“X$”表示以字母X结尾的字符串。
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
(.)字符
这个字符就是英文下的点,它匹配任何一个字符,包括回车、换行等。
(*)字符
星号匹配0个或多个字符,在它之前必须有内容。如:
mysql> select "Ban" REGEXP "^Ba*n"; -> 1(表示匹配)
mysql> select "Baaan" REGEXP "^Ba*n"; -> 1(表示匹配)
mysql> select "Bn" REGEXP "^Ba*n"; -> 1(表示匹配)
(+)字符
加号匹配1个或多个字符,在它之前也必须有内容。加号跟星号的用法类似,只是星号允许出现0次,加号则必须至少出现一次。
mysql> select "Ban" REGEXP "^Ba+n"; -> 1(表示匹配)
mysql> select "Bn" REGEXP "^Ba+n"; -> 0(表示不匹配)
(?)字符
问号匹配0次或1次。
mysql> select "Bn" REGEXP "^Ba?n"; -> 1(表示匹配)
mysql> select "Ban" REGEXP "^Ba?n"; -> 1(表示匹配)
mysql> select "Baan" REGEXP "^Ba?n"; -> 0(表示不匹配)
a*
可以写成a{0,}
a+
可以写成a{1,}
a?
可以写成a{0,1}
在{}内只有一个整型参数i,表示字符只能出现i次;在{}内有一个整型参数i,后面跟一个“,”,表示字符可以出现i次或i次以上;在{}内只有一个整型参数i,后面跟一个“,”,再跟一个整型参数j,表示字符只能出现i次以上,j次以下(包括i次和j次)。其中的整型参数必须大于等于0,小于等于 RE_DUP_MAX(默认是255)。 如果有两个参数,第二个必须大于等于第一个。
(abc)*
匹配任意多个abc(包括空串)
mysql> select "pi" REGEXP "^(pi)*$"; -> 1(表示匹配)
mysql> select "pip" REGEXP "^(pi)*$"; ->0(表示不匹配)
mysql> select "pipi" REGEXP "^(pi)*$"; -> 1(表示匹配)
查询找到所有的名字包函'mar'的字符串
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';
查询找到所有名称以元音开始和‘ok’结束
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';
[a-dX]
匹配“a”、“b”、“c”、“d”或“X”
[^a-dX]
匹配除“a”、“b”、“c”、“d”、“X”以外的任何字符。
mysql> select "aXbc" REGEXP "[a-dXYZ]"; -> 1(表示匹配)
mysql> select "aXbc" REGEXP "^[a-dXYZ]$"; ->0(表示不匹配)
mysql> select "aXbc" REGEXP "^[a-dXYZ]+$"; -> 1(表示匹配)
mysql> select "aXbc" REGEXP "^[^a-dXYZ]+$"; ->0(表示不匹配)
mysql> select "gheis" REGEXP "^[^a-dXYZ]+$"; -> 1(表示匹配)
mysql> select "gheisa" REGEXP "^[^a-dXYZ]+$"; -> 0(表示不匹配)
正则匹配邮箱
^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+[\.][a-zA-Z0-9_-]+$
要匹配.需要加转义字符,并且必须放在[ ]里
正则匹配身份证号
([1-9]\d{5}[12]\d{3}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])\d{3}[0-9xX])$
匹配移动电话
中国移动 134.135.136.137.138.139.150.151.152.157.158.159.187.188 ,147
^1(3[4-9]|5[012789]|8[78])\d{8}$
mysql regexp不支持_MySQL REGEXP正则表达式相关推荐
- mysql客户端不支持_MySQL 8.0 - 客户端不支持服务器请求的身份验证协议; 考虑升级MySQL客户端...
MySQL 8.0 - 客户端不支持服务器请求的身份验证协议; 考虑升级MySQL客户端 我是node.js和MySQL初学者,我刚开始设置并尝试一些基本代码.但是,由于某种原因,我甚至无法与服务器建 ...
- mysql 地理空间支持_MySQL数据类型-地理空间数据类型
1.MySQL地理空间数据类型 POINT,存储一个位置点数据 LINESTRING,存储一条线数据 POLYGON,存储一个多边形数据 MULTIPOINT,存储多个位置点数据 MULTILINES ...
- mysql 配置中文支持_mysql 中文支持
//实际上,最新mySQL以上两句已经失效,在命令行中先exit 然后重新登录可以实现这个目的 重新连接数据库,查看编码,数据表内容 1. mysql> show variables lik ...
- mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法
Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...
- mysql替换首字母_MySQL中使用replace、regexp进行正则表达式替换的用法分析
这篇文章主要介绍了MySQL中使用replace.regexp进行正则表达式替换的用法,结合具体实例形式分析了replace.regexp正则替换的使用技巧与相关注意事项,需要的朋友可以参考下 本文实 ...
- mysql 正则替换 换行,MySQL中使用replace、regexp进行正则表达式替换的用法分析
本文实例讲述了MySQL中使用replace.regexp进行正则表达式替换的用法.,具体如下: 今天一个朋友问我,如果将数据库中查到的类似于"./uploads/110100_cityHo ...
- mysql的正则书写规则_MySql中正则表达式的使用方法描述
MySql中正则表达式的使用方法描述 更新时间:2008年07月30日 08:47:59 作者: 不知道原来mysql支持正则表达式(regex)是定义复杂查询的一个强有力的工具. 这里是一个简单 ...
- mysql 正则 换行符_MySQL 正则表达式
在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配. MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配. 如果您了 ...
- mysql 正则去小数位_mysql必知必会--用正则表达式 进行搜索
正则表达式介绍 前两章中的过滤例子允许用匹配.比较和通配操作符寻找数据.对 于基本的过滤(或者甚至是某些不那么基本的过滤),这样就足够了.但 随着过滤条件的复杂性的增加, WHERE 子句本身的复杂性 ...
- mysql中正则表达式的用法_mysql之正则表达式的用法
正则表达式用来匹配文本的特殊字符集合 格式:在where查询中使用regexp关键字,后面接正则表达式字符 正则表达式与like的区别 like匹配整列数据 regexp可以匹配列中任意位置的字符,更 ...
最新文章
- Python 2 宣布正式退休,Python 3 时代到来!
- 自定义audio样式
- linux下的几种隐藏技术
- 排序 (4)插入排序
- apache工作模式
- 干货!华为AutoML助力AI开发效率提升攻略
- 如何提高网页中图片显示的用户体验(附源码下载)
- jdk jenkins 配置ant_Jenkins流水线实践课程
- 云原生 云计算_使云原生计算具有普遍性和可持续性
- 力扣679.24点游戏
- python RTL自动生成_RTL建模
- 郑州学python哪个机构好_郑太高铁线路图_郑太高铁站点_【高铁网】_郑太高铁时刻表_郑太高铁通车时间...
- Eureka自我保护机制、健康检查的作用
- 去除Ubuntu 20桌面图标的快捷方式箭头
- linux硬盘的两个分区合并_linux新加硬盘合并
- “工程化”对于大型数据平台而言,意味着什么?StartDT Hackathon来了
- 笔记本联想拯救者英伟达win11调节不了亮度
- iPhone 15 高端版本万元起步;华为授权 OPPO 使用其 5G 技术;DeepMind 推出 AI 编剧|极客头条
- 时间加减计算器_手机计算器别只拿来算数!教你这样开启,能唤出隐藏功能,很实用...
- Android常用的第三方开源库和框架