mysql如何使用正则

2023年 8月 10日 71.3k 0

正则表达式是一种强大的文本匹配工具,MySQL也支持使用正则表达式进行匹配查询。

使用正则表达式查询可使用REGEXP或RLIKE关键字,例如:

SELECT * FROM 表名 WHERE 列名 REGEXP '^A.*e$';
SELECT * FROM 表名 WHERE 列名 RLIKE '^A.*e$';

上述代码查询表名为“表名”中,列名为“列名”的行,其中列名匹配以“A”开头,以“e”结尾的数据。

MySQL支持的正则表达式语法包括:

. 匹配任意一个字符(除了换行符 \n)
[...] 匹配括号内的任意一个字符
[^...] 匹配不在括号内的任意一个字符
^ 匹配字符串开头
$ 匹配字符串结尾
* 匹配前一个字符0次或多次
+ 匹配前一个字符1次或多次
? 匹配前一个字符0次或1次
{n} 匹配前一个字符n次
{n,} 匹配前一个字符至少n次
{n,m} 匹配前一个字符n到m次
| 匹配左侧或右侧的字符
()

以下是一些查询数据时使用的正则表达式:

查询包含字符串“mysql”的行:SELECT * FROM 表名 WHERE 列名 REGEXP 'mysql';
查询以“mysql”开头字符串的行:SELECT * FROM 表名 WHERE 列名 REGEXP '^mysql';
查询以“mysql”结尾字符串的行:SELECT * FROM 表名 WHERE 列名 REGEXP 'mysql$';
查询以任意字符开始,以“mysql”结尾的字符串行:SELECT * FROM 表名 WHERE 列名 REGEXP '^.*mysql$';
查询以数字开头的字符串行:SELECT * FROM 表名 WHERE 列名 REGEXP '^[0-9]+.*';
查询不包含字符串“mysql”的行:SELECT * FROM 表名 WHERE 列名 NOT REGEXP 'mysql';
查询包含大小写字母及数字的行:SELECT * FROM 表名 WHERE 列名 REGEXP '[a-zA-Z0-9]';

通过正则表达式查询数据,可以更加灵活地匹配数据,提高数据查询的效率。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论