SQL正则表达式总结

article/2025/8/28 0:59:38

这里写目录标题

  • 一、元字符
  • 二、正则表达函数
    • 1、 `regexp_like(x,pattern[,match_option])`
    • 2、 regexp_instr(x,pattern[,start[,occurrence[,return_option[, match_option]]]])
    • 3、 REGEXP_SUBSTR(x,pattern[,start[,occurrence[, match_option]]])
    • 4、 REGEXP_REPLACE(x,pattern[,replace_string[,start[,occurrence[, match_option]]]])

一、元字符

当我们要进行一些简单的糊涂查询时用百分号(%),通配符(_)就可以了.其中%表达任意长度的字符串,_表示任意的某一个字符。但如果在一些复杂的查询中关用这两个符号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=0SELECT 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 wxrldSELECT REGEXP_REPLACE('hello world','o','x',1,2);            
==》hello wxrld

http://www.hkcw.cn/article/ExaUaVLNDL.shtml

相关文章

2025 一带一路暨金砖国家技能发展与技术创新大赛 第一届“信创适配及安全管理赛项”样题

2025 一带一路暨金砖国家技能发展与技术创新大赛 第一届“信创适配及安全管理赛项”样题 模块A-理论知识:模块B-适配环境搭建:系统安装与配置:DNS 服务配置:DNS 服务配置:CA 服务配置:Httpd 服务配置&#…

unity编辑器扩展dll形式展示

1.背景:最近搞工程迁移发现一旦c#报错就会导致编辑器菜单没法使用,做了一些尝试发现使用dll的方式会是不错的选择。当然有些工具还是建议用外部的c#工程来写比如winform. 2.遇到的问题:我记得之前2017年左右的时候做一个unity的dll工程并不需…

Nacos | 三种方式的配置中心,整合Springboot3.x + yaml文件完成 0错误 自动刷新(亲测无误)

目录 ValueRefreshScope 导入配置依赖 启动类 添加 EnableDiscoveryClient 控制器 编写 yaml 文件 创建 Nacos Data Id 项目启动问题 测试 ConfigurationProperties 无感自动刷新 导入配置依赖 启动类 添加 EnableDiscoveryClient 控制器 Nacos DataID 模板映射 编…

[嵌入式实验]实验五:freeRTOS

一、实验目的 熟悉开发环境在开发板上通过freeRTOS进行LED控制 二、实验环境 硬件:STM32开发板、CMSIS-DAP调试工具 软件:STM32CubeMX软件、ARM的IDE:Keil C51 三、实验内容 1.实验原理 freeRTOS是一种专门设计的嵌入式实时操作系统&…

【Unity】 HTFramework框架(六十六)缺省的运行时组件检视器

更新日期:2025年5月29日。 Github 仓库:https://github.com/SaiTingHu/HTFramework Gitee 仓库:https://gitee.com/SaiTingHu/HTFramework 索引 一、缺省的运行时组件检视器1.自定义运行时组件检视器 二、使用缺省的运行时组件检视器1.定义组…

Ollama v0.8.0 发布,支持通过工具调用进行流式响应!

在 2025 年 5 月 29 日的 AI 技术浪潮中,实时交互性和高效性成为 AI 应用的核心需求。Ollama 作为一个开源的大型语言模型服务器,持续更新以满足开发者需求。Ollama v0.8.0 的发布特别引入了支持通过工具调用进行流式响应的功能,这一更新引发…

LVS+Keepalived 高可用群集

目录 一、 Keepalived 双机热备核心技术 1.1 Keepalived 架构与 VRRP协议 1.2 双机热备配置深度优化 二、 LVSKeepalived 高可用负载均衡架构 2.1 系统架构设计 2.2 LVS集成配置详解 三、 关键技术与疑难解析 3.1 DR模式 ARP 仰制机制 3.2 健康检查策略优化 四、 企业…

python + vscode 开发环境搭建

一、下载安装Python Python 官网链接Welcome to Python.org 二、Python3.12.7安装 三、Python虚拟环境 开发编译器使用Vscode 1、打开VsCode,键盘输入ctrl shift p 点击完了会在文件夹目录下出现一个.venv的路径。 虚拟环境的作用是隔离不同项目的 Python 环境…

[ Qt ] | QRadioButton和QCheckBox的使用

目录 QRadioButton 常用属性 clicked(bool)信号、pressed信号、released信号 小项目 QRadioButton QRadioButton是一个单选按钮,也是继承自QAbstractButton(继承自QWidget) 常用属性 checkable 是否能选中 checked 是否已经被选中 autoExclusive 是否排…

关于无法下载Qt离线安装包的说明

不知道出于什么原因考虑,Qt官方目前不提供离线的安装包下载,意味着网上各种文章提供的各种下载地址都失效了,会提示Download from your IP address is not allowed,当然目前可以在线安装,但是据说只提供了从5.15开始的…

github双重认证怎么做

引言 好久没登陆github了, 今天登陆github后,提醒进行2FA认证。 查看了github通知,自 2023 年 3 月起,GitHub 要求所有在 GitHub.com 上贡献代码的用户启用一种或多种形式的双重身份验证 (2FA)。 假如你也遇到这个问题&#xf…

多部手机连接同一wifi的ip一样吗?

在家庭和办公环境中,多台手机同时连接同一个WiFi路由器已成为常态。不少用户会产生疑问:这些设备的IP地址会相同吗?下面就一起来了解一下吧。 一、多部手机连接同一WiFi的IP‌一样吗 多部手机连接同一WiFi时的IP地址是否相同,需要…

实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.7 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第5章析因设计引导5.7节思考题5.7 R语言解题。主要涉及方差分析&#xff0c;正态假设检验&#xff0c;残差分析&#xff0c;交互作用图&#xff0c;等值线图。 dataframe <-data.frame…

如何打造一份出色的技术文档?

文章目录 每日一句正能量前言一、明确文档的目标和受众二、合理规划文档结构三、注重内容的清晰性和准确性四、持续更新和优化文档五、实用工具推荐六、案例分享示例&#xff1a;如何使用Python编写一个简单的Web应用引言背景知识安装和配置使用指南高级用法常见问题参考文献 七…

记一次 Starrocks be 内存异常宕机

突发性 be 内存飙高&#xff0c;直至被系统 kill 掉&#xff0c;be 内存如下&#xff1a;其中 starrocks_be_update_mem_bytes 指标打满&#xff0c;重启也是如此 [rootlocalhost bin]# curl -XGET -s http://192.168.1.49:8040/metrics | grep "^starrocks_be_.*_mem_b…

阿里云服务器邮件发送失败(dail tcp xxxx:25: i/o timeout)因为阿里云默认禁用 25 端口

最近在测试发送邮件的功能&#xff0c;发现了一个奇怪的问题&#xff0c;同样的 docker 镜像&#xff0c;在本地跑起来是可以正常发送邮件的&#xff0c;但是在阿里云的服务器上跑&#xff0c;就会报错 i/o timeout。 排查了一圈发现&#xff0c;原来是阿里云的操作&#xff0…

什么叫做回表?

指的是在Mysql中使用非聚簇索引&#xff0c;也就是使用二级索引进行作为条件进行查询时&#xff0c;查询了除索引之外的数据&#xff0c;需要根据获得的主键去聚簇索引&#xff0c;查询其他的所需的数据。 有表格&#xff08;id,name,age&#xff09;,进行查询select * from w…

pikachu靶场通关笔记08 XSS关卡04-DOM型XSS

目录 一、XSS原理 二、DOM型XSS 三、源码分析 1、进入靶场 2、XSS探测 3、源码分析 四、渗透实战 1、Payload1 2、Payload2 3、Payload3 本系列为通过《pikachu靶场通关笔记》的XSS关卡(共10关&#xff09;渗透集合&#xff0c;通过对XSS关卡源码的代码审计找到XSS风…

Python打卡第39天

浙大疏锦行 作业&#xff1a; """ DAY 39 图像数据与显存 本节主要介绍深度学习中的图像数据处理和显存管理。 """import torch import torch.nn as nn import torch.nn.functional as F import torchvision import torchvision.transforms as…

SQLite 中文写入失败问题总结

SQLite 中文写入失败问题总结与解决方案 在 Windows 下使用 C 操作 SQLite 数据库时&#xff0c;中文字段经常出现 写入成功但内容显示为 BLOB 或 乱码 的问题。根本原因在于 SQLite 要求字符串以 UTF-8 编码 存储&#xff0c;而默认的 std::string 中文通常是 GB2312/ANSI 编…