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

 SELECT ‘-100‘    FROM dual   WHERE REGEXP_LIKE(‘-100‘,‘(^[+-]?\d{0,}\.?\d{0,}$)‘);

REGEXP_LIKE 用法:

转]oracle 10g正则表达式 REGEXP_LIKE 用法

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

出处见文章底部。
/*
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 对象的 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 位置和顺序

*/
--创建表
create table fzq
(
id varchar(4),
value varchar(10)
);
--数据插入
insert into fzq values
(‘1‘,‘1234560‘);
insert into fzq values
(‘2‘,‘1234560‘);
insert into fzq values
(‘3‘,‘1b3b560‘);
insert into fzq values
(‘4‘,‘abc‘);
insert into fzq values
(‘5‘,‘abcde‘);
insert into fzq values
(‘6‘,‘ADREasx‘);
insert into fzq values
(‘7‘,‘123 45‘);
insert into fzq values
(‘8‘,‘adc de‘);
insert into fzq values
(‘9‘,‘adc,.de‘);
insert into fzq values
(‘10‘,‘1B‘);
insert into fzq values
(‘10‘,‘abcbvbnb‘);
insert into fzq values
(‘11‘,‘11114560‘);
insert into fzq values
(‘11‘,‘11124560‘);
--regexp_like
--查询value中以1开头60结束的记录并且长度是7位
select * from fzq where value like ‘1____60‘;
select * from fzq where regexp_like(value,‘1....60‘);
--查询value中以1开头60结束的记录并且长度是7位并且全部是数字的记录。
--使用like就不是很好实现了。
select * from fzq where regexp_like(value,‘1[0-9]{4}60‘);
-- 也可以这样实现,使用字符集。
select * from fzq where regexp_like(value,‘1[[:digit:]]{4}60‘);
-- 查询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,‘^1[2b]‘,‘i‘);
--查询以12或者1b开头的记录.区分大小写。
select * from fzq where regexp_like(value,‘^1[2B]‘);
-- 查询数据中包含空白的记录。
select * from fzq where regexp_like(value,‘[[:space:]]‘);
--查询所有包含小写字母或者数字的记录。
select * from fzq where regexp_like(value,‘^([a-z]+|[0-9]+)$‘);
--查询任何包含标点符号的记录。
select * from fzq where regexp_like(value,‘[[:punct:]]‘);
/*
理解它的语法就可以了。其它的函数用法类似。
*/

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

时间: 2024-10-05 17:46:11

oracle 判断是否数字 正则表达式法的相关文章

oracle 判断字段是否为是数字等 regexp_like用法 正则表达式

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 正则表达式由标准的元字符(met

oracle 判断字段是否为是数字 regexp like用法 正则表达式

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 正则表达式由标准的元字符(met

java python oracle判断字符串是否为数字的函数

java public boolean isNumeric(String str){ Pattern pattern = Pattern.compile("^-?[0-9]+\\.?[0-9]+"); Matcher isNum = pattern.matcher(str); if( !isNum.matches() ){ return false; } return true; } python def isNum(value): try: int(value) + 1 except

判断数字正则表达式

好多种方式.可以用正则表达式,可以用其他过滤方式.using System.Text.RegularExpressions;/// <summary>/// 使用指定正则进行验证/// </summary>/// <param name="regex">正则表达式</param>/// <param name="validateString">待验证字符</param>/// <retur

ORACLE中的支持正则表达式的函数

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 正则表达式由标准的元字符(met

c#判断是否数字

/// <summary>    /// 判断是否数字    /// </summary>    public static bool CheckCharIsNum(string str)    {        string[] h = str.Split('.');        bool falg = true;        foreach (string item in h)        {            if (!System.Text.RegularExpr

判断一个数字是否是回文数字,如果是则打印出100以内的回文数字,若不是只给出提示信息。

回文数字指的是什么呢?什么是回文数字呢? 回文数字的特征是:一组数字,从左读和从右读都是一样的,比如:123.123321.12345654321 public class HuiWenTest{    public static void main(String[] args)    {        Scanner sc = new Scanner(System.in); try        {            System.out.println("请输入你要判断的数字: &quo

判断该数字是否在数组中。

/* 在一个长度为10的整形数组中,已经放置好了任意10个整数.要求用户任意输入  一个整数,判断该数字是否在数组中.如果在,删除数组中该元素,并把后面的  元素往前挪.(让空出的位置在最后) */ #include <stdio.h> void main() {  int array[10] = {45,12,23,56,78,67,89,34,90,11};  int input = 0,i;    printf("请输入一个任意整数:");  scanf("

判断任意数字是否为素数

素数又被称质数(Prime number)指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个因数的数).大于1的自然数若不是素数,则称之为合数. 用python实现判断一个数字是否为素数. 第一种方法整除法,通过对数字范围以内的数字进行循环整除,效率很低,数字大的时候耗时,代码实现: def is_prime(n): if n == 2: return True if n % 2 == 0 or n <= 1: return False sqr =