返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >oracle中sql正则写法详解
  • 780
分享到

oracle中sql正则写法详解

oraclesql正则oraclesql正则怎么写 2023-05-14 09:05:02 780人浏览 薄情痞子
摘要

目录在oracle 10g及以下版本中,可以使用POSIX扩展来进行正则匹配Oracle 11g及以上版本是否走索引Oracle中使用正则表达式需先使用REGEXP_LIKE函数来匹

Oracle中使用正则表达式需先使用REGEXP_LIKE函数来匹配字符串。正则表达式的语法与一般正则表达式相似,但具体的写法也受不同版本的Oracle环境不同。

在Oracle 10g及以下版本中,可以使用POSIX扩展来进行正则匹配

如:

^:匹配字符串的开始位置;
$:匹配字符串的结束位置;
.:匹配任何单个字符;
[ ]:匹配指定集合内的任何字符,如[abc]匹配a、b、c中任意一个字符;
[^ ]:匹配不在指定集合内的任何字符,如[^abc]匹配除a、b、c之外的任意字符;
*:匹配前面的子表达式零次或多次;
+:匹配前面的子表达式一次或多次;
?:匹配前面的子表达式零次或一次;
{n}:n为非负整数,匹配恰好n次;
{n,}:n为非负整数,匹配至少n次;
{n,m}:n和m为非负整数且n<=m,匹配至少n次且至多m次。
例如,可以使用REGEXP_LIKE函数配合正则表达式来查找符合条件的字符串:

SELECT *
FROM employees
WHERE REGEXP_LIKE(job_title, '^Sales.*Manager$');

上述sql查询会查找职位名称以“Sales”开头,且以“Manager”结尾的所有员工数据。

Oracle 11g及以上版本

对于Oracle 11g及以上版本,可以使用更强大的Perl兼容正则表达式(PCRE)来进行匹配
在使用PCRE时,先需要使用REGEXP_REPLACE函数中加入’c’选项进行匹配,然后再使用相应的正则表达式来实现匹配。

例如,可以使用如下的SQL查询来查找所有包含“John”或“Johnson”的名称:

SELECT *
FROM employees
WHERE REGEXP_REPLACE(name, '(John|Johnson)', '*', 1, 0, 'c') != name;

我的实际例子:

SELECT *
--DISTINCT CODE,count(1)
FROM table
WHERE 1 = 1
AND DATA_CATE = 'CPAU'
--AND ext_5 LIKE 'ASSM%'
AND REGEXP_REPLACE(ext_5, '(ASSM01|PSVA0100)', '*', 1, 0, 'c') != ext_5;
AND VALID_FLG = 'Y'

是否走索引

正则表达式的匹配通常需要对目标字符串全文扫描,因此,在大多数情况下,使用正则表达式无法利用数据库索引。也就是说,在使用正则表达式时,往往无法使用索引来优化查询。

例如,假设有一个包含文本的表,其中有一个 text 字段,我们希望查找所有包含“abc”字符的记录。如果使用 LIKE 操作符,可以这样写:

SELECT * FROM table WHERE text LIKE ‘%abc%’;
如果 text 字段上有索引,那么这个查询会利用索引优化执行,因为 LIKE 操作符可以使用前缀索引。但是,如果使用正则表达式,查询语句将变为:

SELECT * FROM table WHERE REGEXP_LIKE(text, ‘abc’);
在这种情况下,不能使用索引来优化查询,因为 REGEXP_LIKE 函数需要全文扫描才能找到匹配的记录。

虽然正则表达式在某些情况下可能无法使用索引优化,但是可以尽可能地使用模糊查询来代替正则表达式,从而使用索引来优化查询。例如,在上面的例子中,可以使用 LIKE 操作符而不是 REGEXP_LIKE 函数来查询相同的数据。虽然 LIKE 操作符不能使用正则表达式语法,但是它可以使用前缀索引进行优化,可以在满足需求的情况下提高性能。

到此这篇关于oracle中sql 正则怎么写的文章就介绍到这了,更多相关oracle sql 正则内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: oracle中sql正则写法详解

本文链接: https://lsjlt.com/news/202891.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • oracle中sql正则写法详解
    目录在Oracle 10g及以下版本中,可以使用POSIX扩展来进行正则匹配Oracle 11g及以上版本是否走索引Oracle中使用正则表达式需先使用REGEXP_LIKE函数来匹...
    99+
    2023-05-14
    oracle sql 正则 oracle sql 正则怎么写
  • oracle中sql 正则写法详解
    目录在oracle 10g及以下版本中,可以使用POSIX扩展来进行正则匹配Oracle 11g及以上版本是否走索引Oracle中使用正则表达式需先使用REGEXP_LIKE函数来匹配字符串。正则表达式的语法与一般正则表...
    99+
    2023-04-03
    oracle sql 正则 oracle sql 正则怎么写
  • oracle中sql正则怎么写
    本篇内容介绍了“oracle中sql正则怎么写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Oracle中使用正则表达式需先使用REGEXP...
    99+
    2023-07-05
  • 一文详解密码的正则表达式写法
    目录密码的正则表达式如何来写?最佳解决思路次佳解决思路第三种解决思路第四种思路第五种思路第六种思路第七种思路第八种思路第九种思路第十种思路密码的正则表达式如何来写? 正则表达式:密...
    99+
    2023-05-14
    密码正则表达式 正则表达式写法
  • mybatis动态SQL if的test写法及规则详解
    目录mybatis动态SQLif的test写法使用动态SQL最常见情景官方语法规则手册举个例子mybatisiftest动态sql语句mybatis动态SQL if的test写法 使...
    99+
    2024-04-02
  • Oracle 正则表达式实例详解
    Oracle 正则表达式实例详解 FORM开发中的按行拆分需求:拆分后的行要有规律,并按前后层次排序   需求分析如下:      现有行: 2 ...
    99+
    2024-04-02
  • 正则表达式用法详解
    正则表达式之基本概念 在我们写页面时,往往需要对表单的数据比如账号、身份证号等进行验证,而最有效的、用的最多的便是使用正则表达式来验证。那什么是正则表达式呢? 正则表达式(Regul...
    99+
    2024-04-02
  • python正则-re的用法详解
    Python中的re模块是用来进行正则表达式操作的工具包。re模块提供了很多函数和方法,用于对字符串进行匹配、查找、替换等操作。1. re.match(pattern, string, flags=0)从字符串的起始位置开始匹配patt...
    99+
    2023-08-11
    Python
  • 正则表达式中问号(?)的正确用法详解
    目录1、直接跟随在子表达式后面2、非贪婪匹配3、非获取匹配4、断言参考资料:正则表达式中“”的用法大概有以下几种 1、直接跟随在子表达式后面 这种方式是最常用...
    99+
    2024-04-02
  • Python中正则表达式详解
    基础篇 正则表达式在python中运用的非常多,因为他可以进行任意的匹配,可以匹配我们想要提取的信息。当我们接触正则的时候你就会知道正则的强大。正则有一个库re 在一些工程中我们会经常调用正则的库来做与匹配...
    99+
    2022-06-04
    详解 正则表达式 Python
  • jmeter正则表达式提取器的用法与正则详解
    我们再使用jmeter请求接口时,碰到一些业务流程性的接口改怎么办,比如,我一个发布内容的接口需要用到登录接口返回的token加到请求上去才能发布内容,那在jmeter上该是如何实现...
    99+
    2024-04-02
  • 正则表达式grep用法详解
    grep是一个强大的文本搜索工具,它使用正则表达式来搜索和匹配文本。下面是grep的一些常用用法详解:1. 基本用法:grep pattern file这个命令会在文件中搜索匹配指定模式的行,并将其打印出来。pattern是一个正则表达...
    99+
    2023-08-11
    正则表达式
  • oracle regexp_like用法与正则
    ORACLE中的支持正则表达式的函数主要有下面四个: 1,REGEXP_LIKE :与LIKE的功能相似 2,REGEXP_INSTR :与INSTR的功能相似 3,REGEXP_SUBSTR :与SU...
    99+
    2024-04-02
  • SQL正则表达式及mybatis中使用正则表达式的方法
    小编给大家分享一下SQL正则表达式及mybatis中使用正则表达式的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mysql...
    99+
    2024-04-02
  • java正则知识详解
    表达式意义:(推荐:java视频教程)字符x 字符 x。例如a表示字符a\ 反斜线字符。在书写时要写为\\。(注意:因为java在第一次解析时,把\\解析成正则表达式\,在第二次解析时再解析为,所以凡是不是1.1列举到的转义字符,包括1.1...
    99+
    2021-10-02
    java
  • python中使用正则表达式的方法详解
    目录search(pattern, string, flags=0)findall(pattern, string, flags=0)sub(pattern, repl, strin...
    99+
    2024-04-02
  • C++中正则表达式的使用方法详解
    目录介绍1. C++ 中的正则表达式 (Regex)1.1 范围规范1.2 重复模式2. C++正则表达式的例子3. C++正则表达式中使用的函数模板3.1 regex_match(...
    99+
    2024-04-02
  • Python正则表达式re.search()用法详解
    re.search():匹配整个字符串,并返回第一个成功的匹配。如果匹配失败,则返回None  pattern: 匹配的规则, string : 要匹配的内容, flag...
    99+
    2024-04-02
  • Python正则表达式re.sub()用法详解
    目录1.匹配单个数字或字母2.匹配多个数字或字母3.匹配其他总结 源代码、参数及其意义: def sub(pattern, repl, string, count=0, f...
    99+
    2024-04-02
  • C#正则表达式Regex用法详解
    目录一、正则表达式应用举例1、C#校验合法性:2、C#限制输入3、正则表达式匹配闭合HTML标签(支持嵌套)1、分组构造2、举例:二、.Net正则表达式测试器1、功能简介2、下载与安...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作