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系统、计算机编程 文章来源:泥胚文章写作网 |
相关文章推荐
- oracle数据库配置远程连接数据库,配置文件路径
- Oracle数据库10个小问题
- Oracle 树操作(select…start with…connect by…prior)
- Oracle内连接、外连接、右外连接、全外连接小总结
- Oracle中的left join、right join、inner join
- Oracle数据库学习<五>
- 深入Oracle的left join中on和where的区别详解
- Oracle数据库学习<四>
- oracle 事务处理详解
- oracle触发器详解
- oracle 重建索引以及导出所有的索引脚本(可以解决还原数据库文件时先还原数据,在重新用脚本创建索引)
- oracle集合查询
- oracle子查询详解
- oracle单行函数详解
- oracle 分组查询详解
- oracle关键字(保留字)
- Oracle in与exist条件分析
- Oracle 数据库怎么从 Linux x86平台向 IA64 安腾平台(RH or SUSE)迁移?
- oracle查询每个表所占的空间
- 详细解析oracle中left join,right join,inner join用法