oracle正则表达式regexp_like的用法详解
/*
2,REGEXP_INSTR:与INSTR的功能相似
3,REGEXP_SUBSTR:与SUBSTR的功能相似
4,REGEXP_REPLACE:与REPLACE的功能相似
它们在用法上与OracleSQL函数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位置和顺序
*/
--创建表
createtablefzq
(
idvarchar(4),
valuevarchar(10)
);
--数据插入
insertintofzqvalues
("1","1234560");
insertintofzqvalues
("2","1234560");
insertintofzqvalues
("3","1b3b560");
insertintofzqvalues
("4","abc");
insertintofzqvalues
("5","abcde");
insertintofzqvalues
("6","ADREasx");
insertintofzqvalues
("7","123 45");
insertintofzqvalues
("8","adc de");
insertintofzqvalues
("9","adc,.de");
insertintofzqvalues
("10","1B");
insertintofzqvalues
("10","abcbvbnb");
insertintofzqvalues
("11","11114560");
insertintofzqvalues
("11","11124560");
--regexp_like
--查询value中以1开头60结束的记录并且长度是7位
select*fromfzqwherevaluelike"1____60";
select*fromfzqwhereregexp_like(value,"1....60");
--查询value中以1开头60结束的记录并且长度是7位并且全部是数字的记录。
--使用like就不是很好实现了。
select*fromfzqwhereregexp_like(value,"1[0-9]{4}60");
--也可以这样实现,使用字符集。
select*fromfzqwhereregexp_like(value,"1[[:digit:]]{4}60");
--查询value中不是纯数字的记录
select*fromfzqwherenotregexp_like(value,"^[[:digit:]]+$");
--查询value中不包含任何数字的记录。
select*fromfzqwhereregexp_like(value,"^[^[:digit:]]+$");
--查询以12或者1b开头的记录.不区分大小写。
select*fromfzqwhereregexp_like(value,"^1[2b]","i");
--查询以12或者1b开头的记录.区分大小写。
select*fromfzqwhereregexp_like(value,"^1[2B]");
--查询数据中包含空白的记录。
select*fromfzqwhereregexp_like(value,"[[:space:]]");
--查询所有包含小写字母或者数字的记录。
select*fromfzqwhereregexp_like(value,"^([a-z]+|[0-9]+)$");
--查询任何包含标点符号的记录。
select*fromfzqwhereregexp_like(value,"[[:punct:]]");
/*
理解它的语法就可以了。其它的函数用法类似。
*/
相关文章
- 查询 Oracle 排名:利用排序函数提高效率(oracle查询排名)
- 操作Oracle非运算操作:实现不同目标的多种方法(oracle非运算)
- 分析Oracle数据挖掘方法提升业务分析能力(oracle业务)
- 精通 Oracle 触发器:分析不同类型的动作(oracle触发器类型)
- 利用Oracle获取日期与时间信息(oracle日期时间)
- Oracle实现月份统计方法详解(oracle月份统计)
- Oracle如何设置表格列宽?25字中文文章标题:详解Oracle表格列宽设置方法(oracle列宽)
- 如何在Oracle中实现字段相减操作(oracle字段相减)
- Oracle游标详解:定义及用法(oracle游标定义)
- 信息与内容?详解Oracle包的信息查看(oracle如何查看包的)
- Oracle基础教程:入门要点详解(学习oracle的基础)
- Oracle字符串拆分技术及应用(oracle字符拆分)
- 使用MVC框架连接Oracle数据库的步骤详解(mvc连接oracle)
- 「如何调用函数Oracle?」——详解Oracle函数的调用方法(如何调用函数oracle)
- Oracle查询表备注,提高数据管理效率(oracle查询表备注)
- Oracle数据库中的会话和连接,有什么区别?详解!(oracle会话与连接)
- Oracle全文索引深入理解其设计与应用(oracle全文索引详解)
- Oracle 54错误一场诡异之旅(oracle+-54错误)
- Oracle函数大改变10天前的不同(10天前oracle函数)
- Oracle数据库交换分区操作步骤详解(oracle交换分区步骤)
- 构建基于Oracle任务模式的分布式系统(oracle任务模式)
- 表达式Oracle中正则表达式的神奇力量(oracle中有没有正则)
- Oracle 4舍五入算法实现详解(oracle 4舍五入)