oracle正则表达式数字(oracle 中判断是否为数字)

:暂无数据 2026-08-22 06:40:01 :0

oracle正则表达式数字(oracle 中判断是否为数字)

“oracle正则表达式数字”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看oracle正则表达式数字(oracle 中判断是否为数字)!

本文目录

oracle 中判断是否为数字

1、自定义存储过程,利用 to_number函数实现

CREATE OR REPLACE FUNCTION isnumeric (str IN VARCHAR2)
    RETURN NUMBER
IS
    v_str FLOAT;
BEGIN
    IF str IS NULL
    THEN
       RETURN 0;
    ELSE
       BEGIN
          SELECT TO_NUMBER (str)
            INTO v_str
            FROM DUAL;
       EXCEPTION
          WHEN INVALID_NUMBER
          THEN
             RETURN 0;
       END;
       RETURN 1;
    END IF;
END isnumeric;


2. 自定义存储过程,利用 正则表达式函数regexp_like 实现

CREATE OR REPLACE FUNCTION isnumeric (str IN VARCHAR2)
    RETURN NUMBER
IS
BEGIN
    IF str IS NULL
    THEN
       RETURN 0;
    ELSE
       IF regexp_like (str, ’^(-{0,1}+{0,1})+)$’)
       THEN
          RETURN 1;
       ELSE
          RETURN 0;
       END IF;
    END IF;
END isnumeric;


3. 自定义过程,利用 TRANSLATE函数实现

CREATE OR REPLACE FUNCTION isnumeric (str IN VARCHAR2)
    RETURN NUMBER
IS
    v_str VARCHAR2 (1000);
BEGIN
    IF str IS NULL
    THEN
       RETURN 0;
    ELSE
       v_str := TRANSLATE (str, ’.0123456789’, ’.’);
       IF v_str = ’.’ OR v_str = ’+.’ OR v_str = ’-.’ OR v_str IS NULL
       THEN
          RETURN 1;
       ELSE
          RETURN 0;
       END IF;
    END IF;
END isnumeric;

oracle判断字符串是否为数字

1、通过ASCII码判断是否数字,介于之间,(ascii(’0’) = 48, ascii(’9’) = ’57’)
2、调用cast函数尝试强制转换成NUMERIC或NUMBER,不是合法数字串即抛异常
3、调用translate函数,剔除所有数字后,看是否为空串
4、调用正则表达式,进行模式匹配(10g版本新加入的功能)

--通过ASCII码判断是否数字,介于之间,(ascii(’0’) = 48, ascii(’9’) = ’57’)
DECLARE
    str             VARCHAR2(10) := ’123a’;
    val             NUMERIC(10);
    i               int;
    k               int;
    flag            BOOLEAN;
BEGIN
    flag := TRUE;
    for i in 1..10 loop   --新密码是否6位数字
        k := ascii(substr(str, i, 1));
        if k 《 48 or k 》 57 THEN
            flag := FALSE;
        end if;
    end LOOP;
    
    IF flag = true THEN
        dbms_output.put_line(str || ’是的数字序列’);
    ELSE
        dbms_output.put_line(str || ’不是的数字序列’);
    END IF;
END;
-- 调用cast函数尝试强制转换成NUMERIC或NUMBER,不是合法数字串即抛异常
DECLARE
    str    VARCHAR2(10) := ’123’;
    val    NUMERIC(10);
BEGIN
    val := CAST(str AS NUMERIC);
    dbms_output.put_line(str || ’是的数字序列’);
EXCEPTION
   WHEN value_error THEN -- 字符串转实数错误
       --dbms_output.put_line(SQLCODE || ’, ’ || SQLERRM);
       dbms_output.put_line(str || ’不是的数字序列’);
END;
--调用translate函数,剔除所有数字后,看是否为空串
DECLARE
    str VARCHAR2(10) := ’123abc’;
BEGIN
    IF replace(translate(str, ’0123456789’, ’0’), ’0’, ’’) IS NULL THEN
        dbms_output.put_line(str || ’是的数字序列’);
    ELSE
        dbms_output.put_line(str || ’不是的数字序列’);
    END IF;
END;
--调用正则表达式,进行模式匹配(10g版本新加入的功能)
SELECT *
FROM dual
WHERE regexp_like(’1234’, ’^+$’);
--从任意字符串中提取数字串(调用2次translate函数)。
--假定初始串为str。首先将str中数字全部替换为空格,输出记为str2;
--其次,对每个在str中出现的任意str2串中字符,如果是str2的首字符则替换为空格,其它字符则全部剔除
DECLARE
    --str    VARCHAR2(100) := ’ 护照01浙江2     3昆 山4苏 3’;
    str    VARCHAR2(100) := ’ 护照浙江     昆 山苏 4’;
    ret    VARCHAR2(10);
BEGIN
    ret := TRIM(TRANSLATE(str, trim(TRANSLATE(str, ’1234567890’, ’          ’)), ’ ’));
    dbms_output.put_line(ret);
END;

oracle利用正则表达式判断字符串只包含数字

--oracle利用正则表达式判断字符串只包含数字
select * from bb where regexp_like(id,’^+?*$’);

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次。
’|’ 指明两项之间的一个选择。例子’^(+)$’表示所有小写字母或数字组合成的字符串。
\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
’\’ 转义符。
字符簇:
任何字母。
任何数字。
任何字母和数字。
任何白字符。
任何大写字母。
任何小写字母。
任何标点符号。
。
各种操作符的运算优先级
\ 转义符
(), (?, (?=), 圆括号和方括号
*, +, ?, {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,’^’);
select * from test where regexp_like(mc,’^’);
Select mc FROM test Where REGEXP_LIKE(mc,’’);
Select mc FROM test Where REGEXP_LIKE(mc,’^’);
二、REGEXP_INSTR
Select REGEXP_INSTR(mc,’$’) from test;
Select REGEXP_INSTR(mc,’+$’) from test;
Select REGEXP_INSTR(’The price is $400.’,’\$+’) FROM DUAL;
Select REGEXP_INSTR(’onetwothree’,’’) FROM DUAL;
Select REGEXP_INSTR(’,,,,,’,’*’) FROM DUAL;
Select REGEXP_INSTR(’,,,,,’,’’) FROM DUAL;
三、REGEXP_SUBSTR
SELECT REGEXP_SUBSTR(mc,’+’) FROM test;
SELECT REGEXP_SUBSTR(mc,’+’) 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;

oracle正则表达式,如何表达出一个号码全部由相同的数字组成,号码的位数不确定

用 regexp_like这个函数来解决,正则表达式为:+这个正则可以找出任何标点符号。
查询value中包含任何标点符号的记录如下:
select * from xxx where regexp_like(value,’+’);
POSIX 正则表达式由标准的元字符(metacharacters)所构成: ’$’ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ’\n’ 或 ’\r’。 ’?’ 匹配前面的子表达式零次或一次。 ’*’ 匹配前面的子表达式零次或多次。
’|’ 指明两项之间的一个选择。例子’^(+)$’表示所有小写字母或数字组合成的 ’( )’ 标记一个子表达式的开始和结束位置。 ’{m,n}’ 一个精确地出现次数范围,m=《出现次数《=n,’{m}’表示出现m次,’{m,}’表示至少出现m次。
\num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。 任何字母。
任何数字。
任何字母和数字。
任何白字符。
任何大写字母。
任何小写字母。
任何标点符号。
。 \转义符 *, +, ?, {n}, {n,}, {n,m} 限定符^, $, anymetacharacter 位置和顺序。

oracle正则表达式 开头字母结束数字

SELECT REGEXP_SUBSTR(’aba123ab123ab007ab’, ’+’, 1, 2) FROM DUAL;

以上就是我们为大家找到的有关“oracle正则表达式数字(oracle 中判断是否为数字)”的所有内容了,希望可以帮助到你。如果对我们网站的其他内容感兴趣请持续关注本站。

oracle正则表达式数字(oracle 中判断是否为数字)

本文编辑:admin

本文相关文章:


word2003目录怎么做(word2003如何自动生成目录)

word2003目录怎么做(word2003如何自动生成目录)

各位老铁们,大家好,今天由我来为大家分享word2003目录怎么做,以及word2003如何自动生成目录的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年10月10日 20:50

word页码从任意页开始(word中如何设置页码从指定页开始)

word页码从任意页开始(word中如何设置页码从指定页开始)

其实word页码从任意页开始的问题并不复杂,但是又很多的朋友都不太了解word中如何设置页码从指定页开始,因此呢,今天小编就来为大家分享word页码从任意页开始的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月1日 05:30

microsoft word打印在哪里(word打印在哪里)

microsoft word打印在哪里(word打印在哪里)

本篇文章给大家谈谈microsoft word打印在哪里,以及word打印在哪里对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年8月30日 00:00

免费的u盘修复工具(u盘数据恢复 for mac版,相信我,这款免费工具你会爱不释手的)

免费的u盘修复工具(u盘数据恢复 for mac版,相信我,这款免费工具你会爱不释手的)

“免费的u盘修复工具”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看免费的u盘修复工具(u盘数据恢复 for mac版,相信我,这款免费工具你会爱不释手的)!

2026年8月6日 23:40

macromedia fireworks8序列号(Macromedia Fireworks 8序列号)

macromedia fireworks8序列号(Macromedia Fireworks 8序列号)

“macromedia fireworks8序列号”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看macromedia fireworks8序列号(Macromedia Fireworks 8序列号)!

2026年7月23日 14:20

commandline parse error(command line option syntax error.type cammand/for help.是什么意思)

commandline parse error(command line option syntax error.type cammand/for help.是什么意思)

今天给各位分享command line option syntax error.type cammand/for help.是什么意思的知识,其中也会对command line option syntax error.type camman

2026年10月7日 21:50

undergraduate degree(bachelor和undergraduate有什么区别么)

undergraduate degree(bachelor和undergraduate有什么区别么)

这篇文章给大家聊聊关于undergraduate degree,以及bachelor和undergraduate有什么区别么对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月3日 13:00

scanf为什么不安全(warning C4996: ’scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To)

scanf为什么不安全(warning C4996: ’scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To)

本篇文章给大家谈谈scanf为什么不安全,以及warning C4996: ’scanf’: This function or variable may be unsafe. Consider using scanf_s instead.

2026年9月27日 03:40

wordpress好用的插件(wordpress pdf插件哪个好用)

wordpress好用的插件(wordpress pdf插件哪个好用)

大家好,关于wordpress好用的插件很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于wordpress pdf插件哪个好用的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对

2026年9月24日 12:50

orderby命令功能(对order by的理解)

orderby命令功能(对order by的理解)

大家好,orderby命令功能相信很多的网友都不是很明白,包括对order by的理解也是一样,不过没有关系,接下来就来为大家分享关于orderby命令功能和对order by的理解的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我

2026年9月20日 12:50

更多文章:


sumproduct函数计数方法(计数公式是什么)

sumproduct函数计数方法(计数公式是什么)

其实sumproduct函数计数方法的问题并不复杂,但是又很多的朋友都不太了解计数公式是什么,因此呢,今天小编就来为大家分享sumproduct函数计数方法的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月15日 11:50

linux系统的特性(Linux系统的主要特点是什么)

linux系统的特性(Linux系统的主要特点是什么)

大家好,关于linux系统的特性很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于Linux系统的主要特点是什么的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月15日 10:50

知名女星孙侨璐于跨年夜,心梗猝死,年仅25岁!一一一写给年轻人?1月2日演员孙侨潞离世,说好的来日方长转眼就是别离

知名女星孙侨璐于跨年夜,心梗猝死,年仅25岁!一一一写给年轻人?1月2日演员孙侨潞离世,说好的来日方长转眼就是别离

其实演员孙侨潞的问题并不复杂,但是又很多的朋友都不太了解知名女星孙侨璐于跨年夜,心梗猝死,年仅25岁!一一一写给年轻人,因此呢,今天小编就来为大家分享演员孙侨潞的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月15日 10:40

mariadb忘记密码(mysql用户密码忘记了怎么办)

mariadb忘记密码(mysql用户密码忘记了怎么办)

大家好,mariadb忘记密码相信很多的网友都不是很明白,包括mysql用户密码忘记了怎么办也是一样,不过没有关系,接下来就来为大家分享关于mariadb忘记密码和mysql用户密码忘记了怎么办的一些知识点,大家可以关注收藏,免得下次来找不

2026年10月15日 07:50

mysql端口号(如何查看自己数据库的端口号)

mysql端口号(如何查看自己数据库的端口号)

“mysql端口号”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看mysql端口号(如何查看自己数据库的端口号)!

2026年10月15日 06:30

printf打印16进制(C语言 十六进制怎么输出)

printf打印16进制(C语言 十六进制怎么输出)

大家好,今天小编来为大家解答以下的问题,关于printf打印16进制,C语言 十六进制怎么输出这个很多人还不知道,现在让我们一起来看看吧!

2026年10月15日 06:00

avantage怎么设置为中文(Avantage安装丢失GIT)

avantage怎么设置为中文(Avantage安装丢失GIT)

大家好,如果您还对avantage怎么设置为中文不太了解,没有关系,今天就由本站为大家分享avantage怎么设置为中文的知识,包括Avantage安装丢失GIT的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月15日 03:00

ospf协议的作用是什么(OSPF路由协议的作用是什么)

ospf协议的作用是什么(OSPF路由协议的作用是什么)

“ospf协议的作用是什么”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看ospf协议的作用是什么(OSPF路由协议的作用是什么)!

2026年10月15日 02:40

方案对比特效js(在一个网页中如何实现两个JS特效)

方案对比特效js(在一个网页中如何实现两个JS特效)

各位老铁们好,相信很多人对方案对比特效js都不是特别的了解,因此呢,今天就来为大家分享下关于方案对比特效js以及在一个网页中如何实现两个JS特效的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月15日 02:10

activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)

activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)

今天给各位分享登陆视频监控网页时提示activex控件未注册,怎么解决的知识,其中也会对登陆视频监控网页时提示activex控件未注册,怎么解决进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 20:30

最近更新

vivox20plus哪年上市的(Vivox20plus什么时候上市的vivo的下一个型号什么时候出来)
2026-10-15 12:50:05 浏览:0
potato安卓免费下载(potato如何安装)
2026-10-15 12:20:01 浏览:0
热门文章

标签列表