您的位置:首页 > 数据库 > Oracle

oracle 判断是否数字 正则表达式法

2015-12-10 15:15 211 查看
SELECT'
-100
'
FROMdual
WHEREREGEXP_LIKE('
-100
','
(^[+-]?\d{0,}\.?\d{0,}$)
');


REGEXP_LIKE用法:

转]oracle10g正则表达式REGEXP_LIKE用法

2010年01月13日星期三14:29

出处见文章底部。
/*
ORACLE中的支持正则表达式的函数主要有下面四个:
1,REGEXP_LIKE:与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','12345');
insertintofzqvalues
('8','adcde');
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:]]');
/*
理解它的语法就可以了。其它的函数用法类似。
*/

作者:唐山人,姓方,索性就叫tshfang。喜欢计算机,喜欢读书尤其是史书。技术共享,大家方便,让我们一起创造一个自由空间。
工作领域:ERP系统、计算机编程
文章来源:泥胚文章写作网http://www.nipei.com原文地址:http://www.nipei.com/article/9865

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: