oracle表达式怎么用 oracle的语法

oracle中使用正则表达式问题a[[:space:]]{3}b
看ab后面似乎还有空格oracle表达式怎么用,但是没看出来具体几个 。
[[:space:]]
-- 注释
-- 如上表示任意空白oracle表达式怎么用,oracle表达式怎么用你可以在b后面再添加
怎么在 oracle 存储过程中 使用正则表达式15:45:11 SQL select substr('2:1:3',instr('2:1:3',':',2) 1,
15:45:142instr('2:1:3',':',3)-instr('2:1:3',':',2)-1) from dual;
S
-
1
已用时间:00: 00: 00.15
15:45:19 SQL select substr('2:1:3',1,instr('2:1:3',':')-1) from dual;
S
-
2
已用时间:00: 00: 00.15
15:45:36 SQL select substr('2:1:3',instr('2:1:3',':',2) 1,
15:45:382instr('2:1:3',':',3)-instr('2:1:3',':',2)-1) from dual;
S
-
1
已用时间:00: 00: 00.16
15:45:56 SQL select substr('2:1:3',instr('2:1:3',':',3) 1) from dual;
S
-
3
已用时间:00: 00: 00.16
15:46:02 SQL
oracle 的正则表达式oracle的正则表达式(10g才可以用)
oracle的正则表达式(regular expression)简单介绍
目前,正则表达式已经在很多软件中得到广泛的应用 , 包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境 。
Oracle 10g正则表达式提高了SQL灵活性 。有效的解决了数据有效性,重复词的辨认, 无关的空白检测,或者分解多个正则组成的字符串等问题 。
Oracle 10g支持正则表达式的四个新函数分别是:REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和REGEXP_REPLACE 。
它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符 。
特殊字符:
'^' 匹配输入字符串的开始位置 , 在方括号表达式中使用,此时它表示不接受该字符集合 。
'$' 匹配输入字符串的结尾位置 。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或'\r' 。
'.' 匹配除换行符 \n之外的任何单字符 。
'?' 匹配前面的子表达式零次或一次 。
'*' 匹配前面的子表达式零次或多次 。
' ' 匹配前面的子表达式一次或多次 。
'( )' 标记一个子表达式的开始和结束位置 。
'[]' 标记一个中括号表达式 。
'{m,n}' 一个精确地出现次数范围,m=出现次数=n,'{m}'表示出现m次,'{m,}'表示至少出现m次 。
'|' 指明两项之间的一个选择 。例子'^([a-z] |[0-9] )$'表示所有小写字母或数字组合成的字符串 。
\num 匹配 num , 其中 num 是一个正整数 。对所获取的匹配的引用 。
正则表达式的一个很有用的特点是可以保存子表达式以后使用,被称为Backreferencing. 允许复杂的替换能力
如调整一个模式到新的位置或者指示被代替的字符或者单词的位置. 被匹配的子表达式存储在临时缓冲区
中,缓冲区从左到右编号, 通过\数字符号访问 。下面的例子列出了把名字 aa bb cc 变成cc, bb, aa.
Select REGEXP_REPLACE('aa bb cc','(.*) (.*) (.*)', '\3, \2, \1') FROM dual;
REGEXP_REPLACE('ELLENHILDISMIT
cc, bb, aa
'\' 转义符 。
字符簇:
[[:alpha:]] 任何字母 。
[[:digit:]] 任何数字 。
[[:alnum:]] 任何字母和数字 。
[[:space:]] 任何白字符 。
[[:upper:]] 任何大写字母 。
[[:lower:]] 任何小写字母 。
[[unct:]] 任何标点符号 。
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F] 。
各种操作符的运算优先级
\ 转义符
(), (?, (?=), [] 圆括号和方括号
*,, ?, {n}, {n,}, {n,m} 限定符
^, $, \anymetacharacter 位置和顺序
| “或”操作
--测试数据
create table test(mc varchar2(60));
insert into test values('112233445566778899');
insert into test values('22113344 5566778899');
insert into test values('33112244 5566778899');
insert into test values('44112233 5566 778899');
insert into test values('5511 2233 4466778899');
insert into test values('661122334455778899');
insert into test values('771122334455668899');
insert into test values('881122334455667799');
insert into test values('991122334455667788');
insert into test values('aabbccddee');
insert into test values('bbaaaccddee');
insert into test values('ccabbddee');
insert into test values('ddaabbccee');
insert into test values('eeaabbccdd');
insert into test values('ab123');
insert into test values('123xy');
insert into test values('007ab');
insert into test values('abcxy');
insert into test values('The final test is is is how to find duplicate words.');
commit;
一、REGEXP_LIKE
select * from test where regexp_like(mc,'^a{1,3}');
select * from test where regexp_like(mc,'a{1,3}');
select * from test where regexp_like(mc,'^a.*e$');
select * from test where regexp_like(mc,'^[[:lower:]]|[[:digit:]]');
select * from test where regexp_like(mc,'^[[:lower:]]');
Select mc FROM test Where REGEXP_LIKE(mc,'[^[:digit:]]');
Select mc FROM test Where REGEXP_LIKE(mc,'^[^[:digit:]]');
二、REGEXP_INSTR
Select REGEXP_INSTR(mc,'[[:digit:]]$') from test;
Select REGEXP_INSTR(mc,'[[:digit:]] $') from test;
Select REGEXP_INSTR('The price is $400.','\$[[:digit:]] ') FROM DUAL;
Select REGEXP_INSTR('onetwothree','[^[[:lower:]]]') FROM DUAL;
Select REGEXP_INSTR(',,,,,','[^,]*') FROM DUAL;
Select REGEXP_INSTR(',,,,,','[^,]') FROM DUAL;
三、REGEXP_SUBSTR
SELECT REGEXP_SUBSTR(mc,'[a-z] ') FROM test;
SELECT REGEXP_SUBSTR(mc,'[0-9] ') FROM test;
SELECT REGEXP_SUBSTR('aababcde','^a.*b') FROM DUAL;
四、REGEXP_REPLACE
Select REGEXP_REPLACE('Joe Smith','( ){2,}', ',') AS RX_REPLACE FROM dual;
Select REGEXP_REPLACE('aa bb cc','(.*) (.*) (.*)', '\3, \2, \1') FROM dual;
Oracle10gR2中用正则表达式搜索文本Oracle g Release 为了与文本字符串中的模式相匹配 添加了对POSIX正则表达式的支持 Release 用一些附加的可以在Perl找到的元字符 扩充了最初的模式元字符目录 如果你正在用Oracle gR 开发脚本 那么就看看本文里这些搜索文本的有效捷径
首先 简短概述一下:函数REGEXP_LIKE针对一种模式搜索一个字符列 返回一个TRUE或FALSE的逻辑值 你可以在SQL SELECT语句的WHERE子句中用它来限定行数 或者在PL/SQL块中检查数据的有效性 相似的函数——REGEXP_REPLACE REGEXP_SUBSTR和REGEXP_INSTR——都能够在执行其他常见的字符串操作时 接受POSIX正则表达式
Perl为POSIX 类 表达式添加了一些简短的模式 例如 在标准的POSIX正则表达式中 你用符号 [[:digit:]] 来表示一个从 到 的阿拉伯数字 在Perl中 它被简化成 \d 大括号表示一次重复计数 因此 \d{ } 规定了三个阿拉伯数字 要表示你想要一个除阿拉伯数字之外的字符 POSIX模式是 [^[:digit:]] 但是在Perl中 它只表示为 \D
类似的捷径对于空白也存在: \s 与 [[:space:]] 相对应 非空白: \S 对应 [^[:space:]] 列表A中显示了一个取自人力资源方案的例子 列表A
SQL SELECT last_name FROM employees WHERE REGEXP_LIKE(last_name [[:space:]] );
LAST_NAME
De Haan
SQL SELECT last_name FROM employees WHERE REGEXP_LIKE (last_name \s );
LAST_NAME
De Haan
SQL SELECT last_name FROM employees WHERE REGEXP_LIKE (last_name \S ) AND ROWNUM;
LAST_NAME
AbelAnde
Atkinson
Austin
BaerBaida
Banda
Bates
Bell
Bernstein
rows selected
Perl通过对运算符添加(?) 用 非贪婪型 匹配运算符扩充了POSIX中的 贪婪型 匹配运算符 例如 符号 ^ { } 与至少两个 最多五个 开头的值相匹配 但是 解释是 贪婪的 它尽可能地与最长的字符串相匹配 如果列中包括了 这种符号将与前五个 匹配 但是 符号 ^ { }? 是 非贪婪的 它与最短的字符串匹配 这样 就只有两个 了 列表B中是一个利用REGEXP_SUBSTR的例子
列表B
SQL CREATE TABLE testtab (x VARCHAR ( ));
Table created
SQL BEGINFOR i IN LOOPINSERT INTO testtab VALUES (LPAD( i ));END LOOP;END;/
【oracle表达式怎么用 oracle的语法】 PL/SQL procedure successfully pleted
SQL SELECT x FROM testtab;
X
rows selected
SQL SELECT REGEXP_SUBSTR(x ^ { } )FROM testtab;
REGEXP_SUB
rows selected
SQL SELECT REGEXP_SUBSTR(x ^ { }? )FROM testtab;
REGEXP_SUB
rows selected
lishixinzhi/Article/program/Oracle/201311/17650
在oracle中如何使用正则函数表达式截取每一行中的每一个单元格中有多行数据的第一列?函数格式如下:
function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
__srcstr :需要进行正则处理的字符串
__pattern :进行匹配的正则表达式
__position :起始位置,从第几个字符开始正则表达式匹配(默认为1)
__occurrence :标识第几个匹配组,默认为1
__modifier :模式('i'不区分大小写进行检索;'c'区分大小写进行检索 。默认为'c' 。)
oracle表达式怎么用的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle的语法、oracle表达式怎么用的信息别忘了在本站进行查找喔 。

    推荐阅读