ORACLE正则匹配查询LIKE查询多个值检索数据库对象

字符串’^198[0-9]$’可以匹配‘1980-1989’,如果希望统计出公司那些员工是80年~89年入职的,就可以使用如下的SQL语句:

select * from emp e where regexp_like(to_char( e.hiredate,'yyyy'),'^198[0-9]$');

正则表达式中常用到的元数据(metacharacter)如下:

^ 匹配字符串的开头位置。

$ 匹配支付传的结尾位置。

* 匹配该字符前面的一个字符0次,1次或者多次出现。例如52*oracle 可以匹配 5oracle,52oracle,522oracle,5222oracle等等。

+ 匹配该字符前面的一个字符1次或者多次出现。例如52+oracle 可以匹配 52oracle,522oracle,5222oracle等等

? 匹配该字符前面的一个字符0次或1次或者多次出现。例如52?oracle 只能匹配5oracle,52oracle等等

{n} 匹配一个字符串n次,n为正整数。例如:hel{2}o 所匹配的是hello

{n,m} 匹配一个字符串至少n次,至多m次。其中n和m都是整数。

. 匹配除了null之外的任何单个字符串

(pattern) 这个是用来匹配指定模式的一个子表达式

x|y 匹配x或者y,其中x和y是一个或者多个字符

[abc] 匹配括号中的任意一个字符。例如:[ab]bc可以匹配abc和bbc

[a-z] 匹配指定范围内的任意字符串。例如[A-G]hi可以匹配Ahi至Ghi

[::]指定一个字符类,可以匹配该类中的任意字符 这里的字符类包括:

[:alphanum:] 可以匹配字符0-9、A-Z、a-z

[:alpha:]可以匹配字符A-Z、a-z

[:blank:]可以匹配空格或者tab键

[:digit:]可以匹配数字 0-9

[:gragh:]可以匹配非空字符

[:punct:]可以匹配. , ” ‘等标点符号。

[:upper:]可以匹配字符A-Z

[:lower:]可以匹配字符a-z

关于orace中的正则表达式只能通过oracle特意为正则表达式设计的4个函数来使用。这4个函数分别是:
regexp_like,regexp_instr,regexp_replace,regexp_substr。

查询oracle中,哪些对象的sql包括了检索的文本(多个值 使用“|”隔开, 关于user_source对象,移步到无限套娃链接 ORACLE常用数据字典)

未去重(查询出详细信息):

去重查询出涉及到的对象名称:

到此这篇关于ORACLE正则匹配查询,LIKE查询多个值检索数据库对象。的文章就介绍到这了,更多相关oracle正则匹配查询内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • oracle sql语言模糊查询--通配符like的使用教程详解

    oracle在Where子句中,可以对datetime.char.varchar字段类型的列用Like子句配合通配符选取那些"很像..."的数据记录,以下是可使用的通配符: %   零或者多个字符 _    单一任何字符(下划线) \     特殊字符 oracle10g以上支持正则表达式的函数主要有下面四个: 1,REGEXP_LIKE :与LIKE的功能相似 2,REGEXP_INSTR :与INSTR的功能相似 3,REGEXP_SUBSTR :与SUBSTR的功能相似 4,RE

  • Oracle中Like与Instr模糊查询性能大比拼

    instr(title,'手册')>0 相当于 title like '%手册%' instr(title,'手册')=1 相当于 title like '手册%' instr(title,'手册')=0 相当于 title not like '%手册%' t表中将近有1100万数据,很多时候,我们要进行字符串匹配,在SQL语句中,我们通常使用like来达到我们搜索的目标.但经过实际测试发现,like的效率与instr函数差别相当大.下面是一些测试结果: SQL> set timing on

  • Oracle 模糊查询及like用法

    目录 Oracle 模糊查询like用法 一.where子句中使用like关键字 1._ 2.[] 3.[^] 二.在Oracle中提供了instr(strSource,strTarget)函数 Oracle 模糊查询like用法 一.where子句中使用like关键字 我们可以在where子句中使用like关键字来达到Oracle模糊查询的效果:在Where子句中,可以对datetime.char.varchar字段类型的列用Like关键字配合通配符来实现模糊查询, 以下是可使用的通配符: %

  • Oracle使用like查询时对下划线的处理方法

    如:查询ZJ_STANDARD_ITEM表的name1字段包含"_("的数据 --以下的查询语句执行会发现所查询的数据并不是我们想要数据 select * from ZJ_STANDARD_ITEM t where t.name1 like '%_(%'; 原因分析 下划线"_"在oracle中不是单纯的表示下划线的意思,而是表示匹配单一任何字符! 如以上查询语句就表示"("左边只要有任意字符都会被查询到 [解决办法] 使用 escape() 函

  • Oracle如何实现like多个值的查询

    问题背景描述: 某天客户有一个需求,给定一批的手机号码或者电话号码,查询出相关的通话记录,以及相关的一些信息. 客户给定的被叫号码如图所示: 查询出来的结果如下图所示(本批次的结果不是上图导入的结果查询的,为了格式说明,因此导入两张结果不相关的图片): 由于客户给的被叫号码很不规范,查询的时候比较麻烦. 分析过程: 我新建了一个表security_phonebill_callee_num,用以存放导入的被叫号码信息 所有的通话数据保存在t_phonebill_201702中,想要查询必须要实现l

  • ORACLE正则匹配查询LIKE查询多个值检索数据库对象

    字符串’^198[0-9]$’可以匹配‘1980-1989’,如果希望统计出公司那些员工是80年-89年入职的,就可以使用如下的SQL语句: select * from emp e where regexp_like(to_char( e.hiredate,'yyyy'),'^198[0-9]$'); 正则表达式中常用到的元数据(metacharacter)如下: ^ 匹配字符串的开头位置. $ 匹配支付传的结尾位置. * 匹配该字符前面的一个字符0次,1次或者多次出现.例如52*oracle

  • PHP用正则匹配form表单中所有元素的类型和属性值实例代码

    前言 最近工作中遇到一个需求,需要在正则匹配页面中,所有可能存在的 form 表单的元素,可能有 input,action,select,textarea等等所有可能的元素,本文给出一个代码示例.感兴趣的朋友们可以参考学习. 实例代码如下 假设页面 1.html 的网页源代码是: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>一个含有 form 表单

  • python正则匹配查询港澳通行证办理进度示例分享

    复制代码 代码如下: import socketimport re '''广东省公安厅出入境政务服务网护照,通行证办理进度查询.分析网址格式为 http://www.gdcrj.com/wsyw/tcustomer/tcustomer.do?&method=find&applyid=身份证号码构造socket请求网页html,利用正则匹配出查询结果'''def gethtmlbyidentityid(identityid): s = socket.socket(socket.AF_INET

  • MongoDB查询之高级操作详解(多条件查询、正则匹配查询等)

    MongoDB查询之高级操作 语法介绍 MongoDB查询文档使用find()方法,同时find()方法以非结构化的方式来显示所有查询到的文档. -- 1.基本语法 db.collection.find(query, projection) -- 返回所有符合查询条件的文档 db.collection.findOne(query, projection) -- 返回第一个符合查询条件的文档 -- query:可选,查询条件操作符,用于指定查询条件 -- projection:可选,投影操作符,用

  • MySQL全面瓦解之查询的正则匹配详解

    概述 上一章 查询的过滤条件,我们了解了MySQL可以通过 like % 通配符来进行模糊匹配.同样的,它也支持其他正则表达式的匹配,我们在MySQL中使用 REGEXP 操作符来进行正则表达式匹配.用法和like相 似,但又强大很多,能够实现一些很特殊的.复杂的规则匹配.正则表达式使用REGEXP命令进行匹配时,如果符合返回1,不符合返回0.如果 默认不加任何匹配规则REGEXP相当于like '%%'.在前面加上NOT(NOT REGEXP)相当于NOT LIKE. 匹配模式分析 下面有个表

  • Oracle基础学习之子查询

    首先使用子查询的时候注意事项包括,子查询可以嵌套多层和子查询需要圆括号()括起来,下面我们来看看详细的介绍. 基础介绍 1,wherer:子查询一般会返回单行单列 单行多列 多行单列 : 2,having:子查询会返回单行单列,同时表示要使用统计函数: 3,from:子查询返回多行多列数据(表结构): 4,select:返回单行单列 (一般不使用): 示例详解 where(进行数据行的筛选操作): a:查询出低于公司平均工资的雇员信息. select * from emp where sal<(

  • Oracle回滚段使用查询代码详解

    大批量执行DML语句造成回滚段大量占用,又回退操作,如何直观查询数据回滚情况? 单机环境 查询回滚执行进度 select /*+ rule */s.sid, r.name rr, nvl(s.username,'no transaction') us, s.osuser os, s.terminal te, t.used_urec rec, t.used_ublk blk from v$lock l, v$session s, v$rollname r,v$transaction t where

  • oracle中利用关键字rownum查询前20名员工信息及rownum用法

    注意:对 rownum(伪列) 只能使用 < 或 <=, 而用 =, >, >= 都将不能返回任何数据 例:查询工资前20名的员工姓名,工资 ,工资由高到低 Select rownum,first_name,salary from (Select first_name, salary from employees Group by salary desc) Where rownum=<20 如果直接按如下查询得下图结果,显然不正确的,rownum(伪列) 是按查询顺序来排列的

  • Oracle字段根据逗号分割查询数据的方法

    需求是表里的某个字段存储的值是以逗号分隔开来的,要求根据分隔的每一个值都能查出来数据,但是不能使用like查询. 数据是这样的: 查询的sql如下: select * from ( select guid, regexp_substr(st_responsible, '[^,]+', 1, level) responsible from tt_cancle_responsible connect by level <= regexp_count(st_responsible, ',') + 1

  • ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法

    ThinkPHP的数据库条件查询语句有字符串式,数组式书写方法 字符串式即是原生式,数组式查询语句因书写方式与特定字符的原因比较复杂,下面为大家例出了常用的ThinkPHP数组式查询语句的使用方法 ThinkPHP一般查询 $data_gt['id']=array('gt',8);//gt:>大于 $data_egt['id']=array('egt',8);//egt:>=大于等于 $data_lt['id']=array('lt',8);//lt:<小于 $data_elt['id'

随机推荐