首页 > 数据库 >MySQL正则表达式

MySQL正则表达式

时间:2023-11-04 16:34:22浏览次数:47  
标签:匹配 Ba 正则表达式 MySQL mysql REGEXP pi SELECT

1. 正则表达式运算符

expression NOT REGEXP pattern, expression NOT RLIKE pattern expression REGEXP pattern, expression RLIKE pattern 如果表达式expression匹配给定模式pattern返回1,否则返回0. 如果表达式expression或者模式pattern为NULL,则返回NULL RLIKE和REGEXP一样.

2. 正则表达式语法

^
 
匹配字符串开始
 
mysql> SELECT 'fo\nfo' REGEXP '^fo$';                   -> 0
mysql> SELECT 'fofo' REGEXP '^fo';                      -> 1
$
 
匹配字符串结束
 
mysql> SELECT 'fo\no' REGEXP '^fo\no$';                 -> 1
mysql> SELECT 'fo\no' REGEXP '^fo$';                    -> 0
.
 
匹配任意一个字符 (包括回车和换行符)
 
mysql> SELECT 'fofo' REGEXP '^f.*$';                    -> 1
mysql> SELECT 'fo\r\nfo' REGEXP '^f.*$';                -> 1
a*
 
匹配零个或者多个字符a
 
mysql> SELECT 'Ban' REGEXP '^Ba*n';                     -> 1
mysql> SELECT 'Baaan' REGEXP '^Ba*n';                   -> 1
mysql> SELECT 'Bn' REGEXP '^Ba*n';                      -> 1
a+
 
匹配一个或者多个字符a
 
mysql> SELECT 'Ban' REGEXP '^Ba+n';                     -> 1
mysql> SELECT 'Bn' REGEXP '^Ba+n';                      -> 0
a?
 
匹配零个或者一个字符a
 
mysql> SELECT 'Bn' REGEXP '^Ba?n';                      -> 1
mysql> SELECT 'Ban' REGEXP '^Ba?n';                     -> 1
mysql> SELECT 'Baan' REGEXP '^Ba?n';                    -> 0
de|abc
 
匹配de或者abc
 
mysql> SELECT 'pi' REGEXP 'pi|apa';                     -> 1
mysql> SELECT 'axe' REGEXP 'pi|apa';                    -> 0
mysql> SELECT 'apa' REGEXP 'pi|apa';                    -> 1
mysql> SELECT 'apa' REGEXP '^(pi|apa)$';                -> 1
mysql> SELECT 'pi' REGEXP '^(pi|apa)$';                 -> 1
mysql> SELECT 'pix' REGEXP '^(pi|apa)$';                -> 0
(abc)*
 
匹配零个或者多个abc
 
mysql> SELECT 'pi' REGEXP '^(pi)*$';                    -> 1
mysql> SELECT 'pipi' REGEXP '^(pi)*$';                  -> 1
mysql> SELECT 'pipipi' REGEXP '^(pi)*$';                -> 1
mysql> SELECT 'pipipx' REGEXP '^(pi)*$';                -> 0
{1}, {2,3}
 
{n}和{m,n}符号提供了更加一般性的多种情况匹配的正则表达式规则,其中m和n都是整数
a*可以写为a{0,}
a+可以写为a{1,}
a?可以写为a{0,1}
 
具体来讲,a{n}匹配恰好n个字符a,a{n,}匹配n个或者多个字符a,a{m,n}匹配m到n个字符a,包括n个字符a。如果同时给出m和n,则m必须小于或等于n。
 
mysql> SELECT 'abcde' REGEXP 'a[bcd]{2}e';              -> 0
mysql> SELECT 'abcde' REGEXP 'a[bcd]{3}e';              -> 1
mysql> SELECT 'abcde' REGEXP 'a[bcd]{1,10}e';           -> 1
[a-dX], [^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
[.多个字符.]
 
SQL中允许的字符匹配有一张【名称-字符】映射表,不常见的字符匹配都可以在这里找到
网址为https://dev.mysql.com/doc/refman/5.7/en/regexp.html#regexp-operators
 
举几个例子:
1. 匹配换行
mysql> SELECT 'newline\nnewline' REGEXP '[[.newline.]]';
mysql> SELECT 'newline\nnewline' REGEXP '[[.\n.]]';
2. 匹配回车
mysql> SELECT 'enter\tenter' REGEXP '[[.carriage-return.]]';
mysql> SELECT 'enter\tenter' REGEXP '[[.\r.]]';
3. 匹配Tab键
mysql> SELECT 'tab\ntab' REGEXP '[[.tab.]]';
mysql> SELECT 'tab\ntab' REGEXP '[[.\t.]]';
4. 匹配&符号
mysql> SELECT 'https://www.baidu.com/s?tn=hao_pg&ie=utf-8' REGEXP '[[.ampersand.]]';
mysql> SELECT 'https://www.baidu.com/s?tn=hao_pg&ie=utf-8' REGEXP '[[.&.]]';
5. 匹配?符号
mysql> SELECT 'https://www.baidu.com/s?tn=hao_pg&ie=utf-8' REGEXP '[[.question-mark.]]';
mysql> SELECT 'https://www.baidu.com/s?tn=hao_pg&ie=utf-8' REGEXP '[[.\n.]]';

标签:匹配,Ba,正则表达式,MySQL,mysql,REGEXP,pi,SELECT
From: https://blog.51cto.com/u_16270801/8183585

相关文章

  • MySQL 获取MySQL列中字符串出现的次数
    使用SUM()和LIKE语句计算字符串出现次数首先,我们可以使用SUM()函数和LIKE语句计算特定字符串在某一列中出现的次数。具体实现方法如下:SELECTSUM(CASEWHENcolumn_nameLIKE'%search_string%'THEN1ELSE0END)assearch_countFROMtable_name;SQLCopy其中,column_name为需要......
  • Mysql查询字符串中某个字符串出现的次数
    目录1.查单个字符出现的次数2.查多个字符出现的次数3.函数讲解1.查单个字符出现的次数比如我想查howdoyoudo字符串当中出现d的次数:第一眼看上去有点懵,首先mysql并没有直接计算出现字符次数的函数,所以才使用了下面这种方式,其实就是将出现的字符串给替换为了空。然后让原数据减去......
  • Mysql 8.0 下载及安装教程
    软件介绍:MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。 安装和使用教程:1.通过文章末尾处......
  • Mysql为什么存储表数据为什么不能超过2000万行,深度解释 转发 https://www.toutiao.co
    下面是我朋友的面试记录:面试官:讲一下你实习做了什么。朋友:我在实习期间做了一个存储用户操作记录的功能,主要是从MQ获取上游服务发送过来的用户操作信息,然后把这些信息存到MySQL里面,提供给数仓的同事使用。朋友:由于数据量比较大,每天大概有四五千多万条,所以我还给它做了分表的操......
  • C/C++ 使用 MySQL API 操作 数据库
    C/C++对MySQLAPI的使用 MySQL数据库是一个C/S结构(客服端/服务器),当我们安装好MYSQL服务器之后可以通过客户端访问服务器端的数据;这里以C语言提供的API举例实现对数据库的操作;再程序中连接数据库服务器,主要有以下步骤:初始化连接环境;连接mysql的服务器,需......
  • MySQL中的COLLATE(COLLATION)是什么?
    CREATETABLE`table1`(`id`bigint(20)unsignedNOTNULLAUTO_INCREMENT,`field1`textCOLLATEutf8_unicode_ciNOTNULLCOMMENT'字段1',`field2`varchar(128)COLLATEutf8_unicode_ciNOTNULLDEFAULT''COMMENT'字段2......
  • 解密MySQL备份恢复的4种方法
    备份高于一切,今天汇总一下常用的几种备份方法,以及恢复的步骤。一、mysqldump在日常工作中,我们会使用mysqldump命令创建SQL格式的转储文件来备份数据库。或者我们把数据导出后做数据迁移,主备搭建等操作。mysqldump是一个逻辑备份工具,复制原始的数据库对象定义和表数据产生一组可......
  • Windows Server2019安装MySQL8.0.32
    安装包下载:https://downloads.mysql.com/archives/community/下载mysql-8.0.32-winx64.zip1、制定目录配置basedir=D:\\mysql8.0.32#mysql数据存放目录datadir=D:\\mysql8.0.32\\data将.zip压缩包解压到D盘,并重命名为mysql8.0.322、编辑my.ini文件[client]#max_a......
  • MySQL数据库事务隔离级别、Spring事物传播行为
    MySQL数据库事务隔离级别1什么是事务事务就是保障一系列的操作统一执行,要嘛全部成功,要嘛全部失败。事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中某条SQL语句一旦执行失败或产生错误,......
  • mysql知识点
    慢查询定位借助第三方检测工具SkyWalking自研监控系统mysql开启慢查询开启慢查询可能会影响mysql服务器的性能,如果硬盘IO已经是瓶颈的话则影响更为明显。建议做好以下设置:控制日志最大大小定时清理日志使用其他监控工具使用性能监控工具arthas分析......