博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle中如何判断字符串是否全为数字
阅读量:6800 次
发布时间:2019-06-26

本文共 2012 字,大约阅读时间需要 6 分钟。

学习了:http://www.cnblogs.com/zrcoffee/archive/2012/12/11/2812744.html

本文介绍了判断字符串是否全为数字的4种办法,另外还介绍了一个translate函数的小技巧,从任意字符串中提取数字(调用2次translate函数)。这个办法是一个公司同事发现的,用起来很方便,但理解起来稍有点困难。

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

--通过ASCII码判断是否数字,介于[48, 57]之间,(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 || '是[0-9]的数字序列');    ELSE        dbms_output.put_line(str || '不是[0-9]的数字序列');    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 || '是[0-9]的数字序列');EXCEPTION   WHEN value_error THEN -- 字符串转实数错误       --dbms_output.put_line(SQLCODE || ', ' || SQLERRM);       dbms_output.put_line(str || '不是[0-9]的数字序列');END;--调用translate函数,剔除所有[0-9]数字后,看是否为空串DECLARE    str VARCHAR2(10) := '123abc';BEGIN    IF replace(translate(str, '0123456789', '0'), '0', '') IS NULL THEN        dbms_output.put_line(str || '是[0-9]的数字序列');    ELSE        dbms_output.put_line(str || '不是[0-9]的数字序列');    END IF;END;--调用正则表达式,进行模式匹配(10g版本新加入的功能)SELECT *FROM dualWHERE regexp_like('1234', '^[[:digit:]]+$');--从任意字符串中提取数字串(调用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;

 

你可能感兴趣的文章
Centos创建用户
查看>>
视频列表
查看>>
python2 和 python3 区别
查看>>
cd4与cd8比值的意义
查看>>
【配置】log4j.properties 详解与配置步骤
查看>>
js页面载入特效如何实现
查看>>
C#委托和事件
查看>>
TPrinter控制票據打印機
查看>>
Pidgin 插件法解决Ubuntu11.10 QQ
查看>>
你好,WPF
查看>>
iOS开发视频教程下载/iphone开发视频教程下载
查看>>
[转]Android SurfaceView 绘图及帧频处理方法修正
查看>>
读《C++ Primer Plus》的总结
查看>>
每天一点Linux --- 中断键和退出键
查看>>
Python+Django静态文件配置
查看>>
DataSet,DataTable,DateView的关系和用法
查看>>
让IE浏览器支持HTML5标准的方法(转)
查看>>
JBPM流程部署之流程版本升级
查看>>
理解内存分配
查看>>
HDU_3339 In Action(Dijkstra + DP)
查看>>