SQL正则表达式函数与元字符总结

 更新时间:2026年08月29日 16:19:59   作者:Hubert_xx  
SQL的查询语句中,有时会需要引进正则表达式为其复杂搜索指定模式,这篇文章主要介绍了SQL正则表达式函数与元字符的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

一、元字符

当我们要进行一些简单的糊涂查询时用百分号(%),通配符(_)就可以了.其中%表达任意长度的字符串,_表示任意的某一个字符。但如果在一些复杂的查询中关用这两个符号sql语句就会非常复杂,而且也不一定能实现.从Oracle 10g开始引入了在其他程序语言中普通使用的正则表达式。主要有regexp_like(匹配),regexp_replace(替换),regexp_substr(提取),regexp_instr(包含)四个正则表达式函数。

二、正则表达函数

1、regexp_like(x,pattern[,match_option])

含义:查看x是否与pattern相匹配,该函数还可以提供一个可选的参数match_option字符串说明默认的匹配选项。match_option的取值如下:

  1. ‘c’ 说明在进行匹配时区分大小写(缺省值);
  2. ‘i’ 说明在进行匹配时不区分大小写;
  3. ‘n’ (.)点号能表示所有单个字符;
  4. ‘m’ 字符串存在换行的时候当作多行处理.这样 就可匹配每行的结尾 . 不然的话 就可匹配每行的结尾.不然的话 就可匹配每行的结尾.不然的话只匹配字符串最后的位置。
select * from emp where regexp_like(ename,'^a[a-z]*n$')

解析:
从emp表中匹配ename字段,要求以a开头,a-z任意多个字符(包括0个),n结尾。
例如ename为arwen或arwin或anden.但Arwen不能被匹配.因为默认是区分大小写。

select * from emp where regexp_like(ename,'^a[a-z]*n$','i')

可以查找ename为Arwen的行记录。

2、regexp_instr(x,pattern[,start[,occurrence[,return_option[, match_option]]]])

含义:用于在x中查找pattern。返回pattern在x中出现的位置。匹配位置从1开始。可以参考字符串函数 INSTR(),参数相关:

  1. ‘start’ 开始查找的位置;
  2. ‘occurrence’ 说明应该返回第几次出现pattern的位置;
  3. ‘return_option’ 说明应该返回什么整数。若该参数为0,则说明要返回的整数是x中的一个字符的位置;若该参数为非0的整数,则说明要返回的整数为x中出现在pattern之后的字符的位置;
  4. ‘match_option’ 修改默认的匹配设置。与regexp_like里面的相同。
SELECT REGEXP_INSTR('hello world','o',1,1,0);   
==》5 

解析:
查找o在hello word中第一次出现的位置。
start=1,occurrence=1,return_option=0

SELECT REGEXP_INSTR('hello world','o',1,1,1);
==》6

查找o在hello word中第一次出现后的字符的位置,这里return_option=1也可以等于其他非0整数。

SELECT REGEXP_INSTR('hello world','o',1,2,0);
==》8

查找o在hello word中第二次出现的位置(空格也属于一个字符位置)。

3、REGEXP_SUBSTR(x,pattern[,start[,occurrence[, match_option]]])

**含义:**用于在x中查找pattern并返回。可以参考字符串函数 SUBSTR(),参数同REGEXP_INSTR函数。

SELECT REGEXP_SUBSTR('hello world','l{2}');            
==》ll

解析:
查询到匹配的字符串才返回匹配的字符.没查到就返回空。

4、REGEXP_REPLACE(x,pattern[,replace_string[,start[,occurrence[, match_option]]]])

含义:用于在x中查找pattern,并将其替换为replae_string。可以参考字符串函数 REPLACE(),参数同REGEXP_INSTR函数。

REPLACE(String,from_str,to_str) 即:将String中所有出现的from_str替换为to_str。注意:from_str不能是空字符串 ('')。

SELECT REGEXP_REPLACE('hello world','o','x',1,1);            
==》hellx world

解析:
start=1,occurrence=1。

SELECT REGEXP_REPLACE('hello world','o','x');            
==》hellx wxrld

SELECT REGEXP_REPLACE('hello world','o','x',1,2);            
==》hello wxrld

总结 

到此这篇关于SQL正则表达式函数与元字符的文章就介绍到这了,更多相关SQL正则表达式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mysql中SUBSTRING函数的具体使用

    Mysql中SUBSTRING函数的具体使用

    本文主要介绍了Mysql中SUBSTRING函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • MySQL实现配置主从复制项目实践

    MySQL实现配置主从复制项目实践

    本文主要介绍了MySQL 配置主从复制实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • MySQL基于索引的压力测试的实现

    MySQL基于索引的压力测试的实现

    本文主要介绍了MySQL基于索引的压力测试的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • mac系统OS X10.10版本安装最新5.7.9mysql的方法

    mac系统OS X10.10版本安装最新5.7.9mysql的方法

    这篇文章给大家介绍mac系统OS X10.10版本安装最新5.7.9mysql的方法,本文分步骤纯文字说明,介绍的非常详细,具有参考价值,在此分享供大家参考
    2015-10-10
  • MySQL ORDER BY 的实现分析

    MySQL ORDER BY 的实现分析

    总的来说,在 MySQL 中的ORDER BY有两种排序实现方式,一种是利用有序索引获取有序数据,另一种则是通过相应的排序算法,将取得的数据在内存中进行排序
    2012-07-07
  • /var/log/pacct文件导致MySQL启动失败的案例分享

    /var/log/pacct文件导致MySQL启动失败的案例分享

    这篇文章主要介绍了/var/log/pacct文件导致MySQL启动失败的案例分享,这是个比较让人郁闷的问题,找不到MySQL启动失败的原因进可以按此文的方法试一试,需要的朋友可以参考下
    2015-01-01
  • MySql 查询优化器(Optimizer)解析

    MySql 查询优化器(Optimizer)解析

    MySQL查询优化器(Optimizer)是数据库内核中最核心的模块,它通过分析SQL语句、表统计信息和索引,生成最优的执行计划以提高查询效率,本文给大家介绍MySql 查询优化器(Optimizer)的相关知识,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • 从MySQL全库备份中恢复某个库和某张表的方法

    从MySQL全库备份中恢复某个库和某张表的方法

    这篇文章主要介绍了从MySQL全库备份中恢复某个库和某张表的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 基于MYSQL中优化的一些方法

    基于MYSQL中优化的一些方法

    本篇文章是对MYSQL中优化的一些方法进行了详细的介绍,需要的朋友参考下
    2013-05-05
  • CentOs7.x安装Mysql的详细教程

    CentOs7.x安装Mysql的详细教程

    CentOS7的yum源中默认好像是没有MySQL的。为了解决这个问题,我们要先下载mysql的repo源。下面通过本教程给大家详细介绍CentOs7.x安装Mysql的方法,一起看看吧
    2016-12-12

最新评论