ORACLE中的支持正则表达式的函数主要有下面四个:
1,REGEXP_LIKE :与LIKE的功能相似
2,REGEXP_INSTR :与INSTR的功能相似
3,REGEXP_SUBSTR :与SUBSTR的功能相似
4,REGEXP_REPLACE :与REPLACE的功能相似
它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同,
但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。
POSIX 正则表达式由标准的元字符(metacharacters)所构成:
'^' 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。
'$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。
'.' 匹配除换行符之外的任何单字符。
'?' 匹配前面的子表达式零次或一次。
'+' 匹配前面的子表达式一次或多次。
'*' 匹配前面的子表达式零次或多次。
'|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的字符串。
'( )' 标记一个子表达式的开始和结束位置。
'[]' 标记一个中括号表达式。
'{m,n}' 一个精确地出现次数范围,m=<出现次数<=n,'{m}'表示出现m次,'{m,}'表示至少出现m次。
\num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。
字符簇:
[[:alpha:]] 任何字母。
[[:digit:]] 任何数字。
[[:alnum:]] 任何字母和数字。
[[:space:]] 任何白字符。
[[:upper:]] 任何大写字母。
[[:lower:]] 任何小写字母。
[[:punct:]] 任何标点符号。
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。
各种操作符的运算优先级
\转义符
(), (?:), (?=), [] 圆括号和方括号
*, +, ?, {n}, {n,}, {n,m} 限定符
^, $, anymetacharacter 位置和顺序
|
--创建表
create table fzq
(
id varchar(4),
value varchar(10)
);
--数据插入
insert into fzq values
('1','1234560');
insert into fzq values
('2','1234560');
insert into fzq values
('3','1b3b560');
insert into fzq values
('4','abc');
insert into fzq values
('5','abcde');
insert into fzq values
('6','ADREasx');
insert into fzq values
('7','123 45');
insert into fzq values
('8','adc de');
insert into fzq values
('9','adc,.de');
insert into fzq values
('10','1B');
insert into fzq values
('10','abcbvbnb');
insert into fzq values
('11','11114560');
insert into fzq values
('11','11124560');
regexp_like举例:
--查询value中以1开头60结束的记录并且长度是7位
select * from fzq where value like '1____60';
select * from fzq where regexp_like(value,'1....60');
--查询value中以1开头60结束的记录并且长度是7位并且全部是数字的记录。
--使用like就不是很好实现了。
select * from fzq where regexp_like(value,'1[0-9]{4}60');
-- 也可以这样实现,使用字符集。
select * from fzq where regexp_like(value,'1[[:digit:]]{4}60');
-- 查询value中不是纯数字的记录
select * from fzq where not regexp_like(value,'^[[:digit:]]+$');
-- 查询value中不包含任何数字的记录。
select * from fzq where regexp_like(value,'^[^[:digit:]]+$');
--查询以12或者1b开头的记录.不区分大小写。
select * from fzq where regexp_like(value,'^1[2b]','i');
--查询以12或者1b开头的记录.区分大小写。
select * from fzq where regexp_like(value,'^1[2B]');
-- 查询数据中包含空白的记录。
select * from fzq where regexp_like(value,'[[:space:]]');
--查询所有包含小写字母或者数字的记录。
select * from fzq where regexp_like(value,'^([a-z]+|[0-9]+)$');
--查询任何包含标点符号的记录。
select * from fzq where regexp_like(value,'[[:punct:]]');
分享到:
相关推荐
下面将详细介绍`REGEXP_LIKE`的用法以及如何在Oracle 10g中使用正则表达式进行数据筛选。 ### Oracle 10g正则表达式与`REGEXP_LIKE` Oracle 10g支持多种正则表达式相关的函数,包括但不限于: 1. **`REGEXP_LIKE`...
Oracle的regexp_like函数使用POSIX正则表达式代替了传统的百分号(%)和通配符(_)字符,这样可以在使用正则表达式时,享受到更多的灵活性和表达力。 在实践中,regexp_like的用法可以分为多个场景进行分析: 1. ...
### Oracle正则表达式详解(用法+实例) #### 一、正则表达式简介 正则表达式是一种用于匹配字符串中字符组合的工具。它由一个或多个字符及特殊的字符元组成,能够帮助我们执行复杂的字符串搜索和替换任务。在...
ORACLE 正则表达式的使用(REGEXP_LIKE REGEXP_INSTR REGEXP_SUBSTR REGEXP_REPLACE)
### Oracle 10g 对正则表达式的支持分析 #### 一、引言 随着信息技术的发展,数据库管理系统(DBMS)的功能也在不断扩展和完善。Oracle Database 作为业界领先的数据库产品之一,在其10g版本中引入了对正则表达式...
Oracle中的正则表达式是指在Oracle数据库管理系统中使用的正则表达式语言。正则表达式是一种强大的字符串模式匹配语言,可以用来在字符串中搜索、验证、提取和替换文本。Oracle中的正则表达式函数提供了强大的字符串...
从 Oracle 10g 开始,Oracle 内建了符合 IEEE POSIX (Portable Operating System for Unix)标准的正则表达式,同时也支持 Perl 的正则表达式规则。 正则表达式的组成 ----------------- 正则表达式由一个或多个...
Oracle 10g 正则表达式函数 Oracle 10g 正则表达式函数是 Oracle 数据库中的一种功能强大且灵活的字符串处理函数。它可以实现复杂的字符串匹配和提取功能,非常适合处理非结构化数据。 1. 元字符 在 Oracle 10g ...
Oracle 10g引入了对正则表达式的支持,使得在数据库查询中处理复杂匹配变得更加简单。在10g版本之前,我们通常依赖`LIKE`和通配符`%`和`_`来完成此类任务,但正则表达式提供了更强大的功能和灵活性。 在Oracle 10g...
### Oracle正则表达式函数全面解析 #### 一、引言 在数据库处理文本数据时,经常需要用到模式匹配。Oracle数据库提供了丰富的正则表达式函数,这些函数可以帮助开发者更高效地进行文本匹配、搜索和替换等操作。本文...
3. `REGEXP_LIKE`:类似SQL的LIKE,但支持正则表达式的匹配。 4. `REGEXP_REPLACE`:使用正则表达式替换字符串中的一部分。 5. `REGEXP_COUNT`:计算字符串中符合正则表达式的子串数量。 例如,如果你想找出所有以...
在Oracle 10g及更高版本中,Oracle引入了对IEEE POSIX标准的正则表达式支持,使得SQL语句能进行更复杂的模式匹配。 正则表达式的核心在于元字符,它们具有特殊的含义: 1. `^`:表示匹配一行的开始。 2. `$`:表示...
Oracle 正则表达式参考手册 regexp_instr regexp_substr regexp_repalce regexp_like
PDF文件"Oracle正则表达式函数介绍.pdf"很可能详细介绍了这些函数的使用方法、模式语法和实例,而"Oracle_正则表达式.txt"可能包含了更多示例或使用技巧。对于学习和理解Oracle正则表达式,这两个文件都是宝贵的资源...
在深入探讨ORACLE.PLSQL中的正则表达式之前,我们首先需要理解正则表达式的概念以及它在数据库查询中的应用价值。正则表达式(Regular Expression),简称regex或regexp,是一种用于模式匹配的强大工具,广泛应用于...