《racleregexplike的相关知识及使用示例》由会员分享,可在线阅读,更多相关《racleregexplike的相关知识及使用示例(3页珍藏版)》请在金锄头文库上搜索。
1、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
2、对象的 Multiline 属性,则 $ 也匹配 n 或 r。 ? 匹配前面的子表达式零次或一次。 * 匹配前面的子表达式零次或多次。| 指明两项之间的一个选择。例子(a-z+|0-9+)$表示所有小写字母或数字组合成的 ( ) 标记一个子表达式的开始和结束位置。 m,n 一个精确地出现次数范围,m=出现次数=n,m表示出现m次,m,表示至少出现m次。num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。 :alpha: 任何字母。:digit: 任何数字。:alnum: 任何字母和数字。:space: 任何白字符。:upper: 任何大写字母。:lower: 任何小写字母。
3、:punct: 任何标点符号。:xdigit: 任何16进制的数字,相当于0-9a-fA-F。 转义符 *, +, ?, n, n, n,m 限定符, $, anymetacharacter 位置和顺序。1. createtablefzqidvarchar(4), 2. valuevarchar(10)-数据插入 3. insertintofzqvalues 4. (1,1234560); 5. insertintofzqvalues 6. (2,1234560); 7. insertintofzqvalues 8. (3,1b3b560); 9. insertintofzqvalues 10
4、. (4,abc); 11. insertintofzqvalues 12. (5,abcde); 13. insertintofzqvalues 14. (6,ADREasx); 15. insertintofzqvalues 16. (7,12345); 17. insertintofzqvalues 18. (8,adcde); 19. insertintofzqvalues 20. (9,adc,.de); 21. insertintofzqvalues 22. (10,1B); 23. insertintofzqvalues 24. (10,abcbvbnb); 25. insert
5、intofzqvalues 26. (11,11114560); 27. insertintofzqvalues 28. (11,11124560);-regexp_like-查询value中以1开头60结束的记录并且长度是7位。1. select*fromfzqwherevaluelike1_60; 2. select*fromfzqwhereregexp_like(value,1.60);-查询value中以1开头60结束的记录并且长度是7位并且全部是数字的记录。-使用like就不是很好实现了。1. select*fromfzqwhereregexp_like(value,10-9460)
6、; 2. select*fromfzqwhereregexp_like(value,1:digit:460);- 查询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,12b,i);-查询以12或者1b开头的记录.区分大小写。1.
7、 select*fromfzqwhereregexp_like(value,12B);select*fromfzqwhereregexp_like(value,:space:); 2. select*fromfzqwhereregexp_like(value,(a-z+|0-9+)$);select*fromfzqwhereregexp_like(value,:punct:);例子:判断姓名是否为空,少于两个字符,包含数字和字母1. createorreplace 2. FUNCTIONCheckName(NameStrinVARCHAR2)RETURNinteger 3. As 4. BEGIN 5. -符合返回1,不符合返回0 6. if(NameStrisnullorlength(NameStr)2)then 7. return0; 8. else 9. if(NameStrlike%未取名%)then 10. RETURN0; 11. endif; 12. ifregexp_like(NameStr,(a-z+|0-9+|A-Z+)$)then 13. return0; 14. endif; 15. return1; 16. endif; 17. ENDCheckName;来源:网络 编辑:联动北方技术论坛