Oracle中如何判断字符串是否全为数字

时间:2022-02-12 03:12:36

Oracle中如何判断字符串是否全为数字

学习了: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) := '';
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, '', ''), '', '') IS NULL THEN
dbms_output.put_line(str || '是[0-9]的数字序列');
ELSE
dbms_output.put_line(str || '不是[0-9]的数字序列');
END IF;
END; --调用正则表达式,进行模式匹配(10g版本新加入的功能)
SELECT *
FROM dual
WHERE regexp_like('', '^[[: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, '', ' ')), ' '));
dbms_output.put_line(ret);
END;

Oracle中如何判断字符串是否全为数字的更多相关文章

  1. Oracle中如何判断字符串是否全为数字,以及从任意字符串中提取数字

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

  2. C&plus;&plus; 判断字符串是否全是数字

    在实际的工作中,需要提取程序中的字符串信息,但是程序中经常将一些数字当做字符串来进行处理,例如表盘的刻度信息,这时候就需要判断字符串是否全为数字,来进行真正意义上的字符串提取.下面介绍了判断字符串是否 ...

  3. c&num;用正则表达式判断字符串是否全是数字、小数点、正负号组成 Regex reg &equals; new Regex&lpar;&commat;&quot&semi;&Hat;&lpar;&lpar;&lbrack;0-9&rsqb;&plus;&bsol;&period;&lbrack;0-9&rsqb;&ast;&lbrack;1-9&rsqb;&lbrack;0-9&rsqb;&ast;&rpar;&vert;&lpar;&lbrack;0-9&rsqb;&ast;&lbrack;1-9&rsqb;&lbrack;0-9&rsqb;&ast;&bsol;&period;&lbrack;0-9&rsqb;&plus;&rpar;&vert;&lpar;&lbrack;0-9&rsqb;&ast;&lbrack;1-9&rsqb;&lbrack;0-9&rsqb;&ast;&rpar;&rpar;&dollar;&quot&semi;&rpar;&semi;

    Regex reg = new Regex(@"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][ ...

  4. oracle中如何对字符串进行去除空格的方法

    oracle中如何对字符串进行去除空格的方法 今天学习了一下oracle中如何对字符串进行去除空格的方法,这里总结一下.了解到的方法主要有两种:Trim函数以及Replace函数.下面我详细的介绍一下 ...

  5. js判断字符串是否全为空&lpar;使用trim函数&sol;正则表达式&rpar;

    我们需要判断用户输入的是否全是空格,可以使用以下方法: 方法一: 使用trim() /* 使用String.trim()函数,来判断字符串是否全为空*/ function kongge1(test) ...

  6. 在shell中如何判断字符串是否为有效的IP地址【转】

    转自 在shell中如何判断字符串是否为有效的IP地址_echoisecho_新浪博客http://blog.sina.com.cn/s/blog_53a844e50100xxus.html 近来需要 ...

  7. java练习-判断字符串是否都是数字

    方法1: package everyDayPratise; public class IsAllNumber { public static boolean method1(String s) { i ...

  8. Oracle中REGEXP&lowbar;SUBSTR函数&lpar;字符串转多行&rpar;

    Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下: 在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20',' ...

  9. JavaScript判断字符串能否转化为数字

    判断一个字符串能否转化为数字 我们常常使用parseInt函数. 不过该函数的适用范围是很小的. 一般说来对于 如下类似 var myStr = "123hello"; 使用par ...

随机推荐

  1. 第50课 关于对话框&lpar;About&rpar;

    1. 关于对话框 (1)标准的桌面应用软件都有一个关于对话框 (2)关于对话框用于标识软件自身的信息.如logo.项目名.版本号.开发者信息.版权信息.联系方式等. 2. 经典设计方案 3. 项目持续 ...

  2. Python模块:struct

    各个编程语言都有自己的数据类型,当python需要接受其他语言或者网络传输来交互数据的时候,需要考虑到python的数据类型与其他平台之间交互问题.而python的struct就是解决这个问题的. s ...

  3. JS中数组Array的用法示例介绍 (转)

    new Array() new Array(len) new Array([item0,[item1,[item2,...]]] 使用数组对象的方法: var objArray=new Array() ...

  4. Linux操作系统-命令-top

    当我们在执行性能测试的时候,需要关注 业务性能指标(业务监控) 吞吐量(TPS) 响应时间 平均响应时间 50%用户响应时间 90%用户响应时间 标准差 # TPS标准差越小,说明波动越小,系统越稳定 ...

  5. (二)部署solr7&period;1&period;0到tomcat

    solr7.1.0部署到tomcat8 官方表示solr5之后的版本不再提供对第三方容器的支持(不提供war包了). "旧式"solr.xml格式不再支持,核心必须使用core.p ...

  6. bzoj 3451&colon; Tyvj1953 Normal &lbrack;fft 点分治 期望&rsqb;

    3451: Tyvj1953 Normal 题意: N 个点的树,点分治时等概率地随机选点,代价为当前连通块的顶点数量,求代价的期望值 百年难遇的点分治一遍AC!!! 今天又去翻了一下<具体数学 ...

  7. 托管C&plus;&plus;线程锁实现

    最近由于工作需要,开始写托管C++,由于C++11中的mutex,和future等类,托管C++不让调用(报错),所以自己实现了托管C++的线程锁. 该类可确保当一个线程位于代码的临界区时,另一个线程 ...

  8. flask登录插件 flask-login

    Flask-Login为Flask提供了用户会话管理,它处理了日常的登入登出且长时间记住用户的会话 使用: 1.配置,初始化 LoginManager 创建实例 loginManger = Login ...

  9. Codeforces Beta Round &num;94 div 2 C Statues dfs或者bfs

    C. Statues time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...

  10. android 判断应用是否在前台显示

    在一些场景下我们需要知道应用是否在前台显示,当不在前台显示的时候,一些后台进程可以暂时停止,比如一些查询任务.不必要的线程.不需要的渲染等,以减少对设备资源的占用.判断应用是否在前台通常可以使用一下方 ...