在Oracle中,如何判断一个字符串是否为数字?

在Oracle中,如何判断一个字符串是否为数字?

可以有2种办法来判断,第一种办法为REPLACE加TRANSLATE函数,在程序中可以直接使用“TRANSLATE(REPLACE('入参','.',''),'/1234567890','/') IS NULL”来判断入参为数字,缺点是,若入参有2个小数点或含有加减号则不能判断。第二种办法为使用TO_NUMBER或REGEXP_LIKE来自定义函数进行判断。

第一种办法示例:

SYS@PROD1> SELECT

  2     NVL2(TRANSLATE(REPLACE('12','.',''),'/1234567890','/'),'CHAR','NUMBER') IN_TYPE,

  3     NVL2(TRANSLATE(REPLACE('12.34','.',''),'/1234567890','/'),'CHAR','NUMBER') IN_TYPE2,

  4     NVL2(TRANSLATE(REPLACE('12.Mabcd','.',''),'/1234567890','/'),'CHAR','NUMBER') IN_TYPE3

  5  FROM DUAL;

 

IN_TYP IN_TYP IN_T

------ ------ ----

NUMBER NUMBER CHAR

第二种办法示例:

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. 利用 ISNUMERIC

CREATE OR REPLACE FUNCTION ISNUMERIC(STR IN VARCHAR2) RETURN NUMBER IS

BEGIN

  IF STR IS NULL THEN

    RETURN 0;

  ELSE

    IF REGEXP_LIKE(STR, '(^[+-]?\d{0,}\.?\d{0,}$)') 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;

 

 



About Me


.............................................................................................................................................

● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除

● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、博客园(http://www.cnblogs.com/lhrbest)和个人微信公众号(xiaomaimiaolhr)上有同步更新

● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/

● 本文博客园地址:http://www.cnblogs.com/lhrbest

● 本文pdf版、个人简介及小麦苗云盘地址:http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答:http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址:http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

.............................................................................................................................................

● QQ群号:230161599(满)、618766405

● 微信群:可加我微信,我拉大家进群,非诚勿扰

● 联系我请加QQ好友(646634621),注明添加缘由

● 于 2017-11-01 09:00 ~ 2017-11-30 22:00 在魔都完成

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

.............................................................................................................................................

● 小麦苗的微店:https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

● 小麦苗出版的数据库类丛书:http://blog.itpub.net/26736162/viewspace-2142121/

.............................................................................................................................................

使用微信客户端扫描下面的二维码来关注小麦苗的微信公众号(xiaomaimiaolhr)及QQ群(DBA宝典),学习最实用的数据库技术。

   小麦苗的微信公众号      小麦苗的DBA宝典QQ群2     《DBA笔试面宝典》读者群       小麦苗的微店

.............................................................................................................................................

时间: 2024-09-22 03:23:15

在Oracle中,如何判断一个字符串是否为数字?的相关文章

Oracle中如何判断一个字符串是否含有汉字(中文)

oracle中如何判断一个字符串是否含有汉字 1.1  BLOG文档结构图       1.2  前言部分   1.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ①全角字符的判断,或者是含有汉字的字符串的判断       本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力. 1.2.2  实验环境介绍   11.2.0.3  RHEL6.5       1.2.3  本文

asp.net中利用正则表达式判断一个字符串是否为数字的代码_正则表达式

复制代码 代码如下: publicstaticbool IsNumeric(string value) { return Regex.IsMatch(value, @"^[+-]?\d*[.]?\d*$"); } publicstaticbool IsInt(string value) { return Regex.IsMatch(value, @"^[+-]?\d*$"); } publicstaticbool IsUnsign(string value) { r

java如何判断一个字符串中是否有@符号

问题描述 java如何判断一个字符串中是否有@符号 java如何判断一个字符串中是否有@符号 用if语句怎么判断 解决方案 if(str.contains("@")) 解决方案二: Java中怎样判断一个字符串是否为数字java 判断一个字符串中的字符是否唯一java判断一个字符串是否为空的方法 解决方案三: 用正则表达式就可以做到吧, String regex="w+@w+(.w{2,3})*.w{2,3}" 这个是用正则表达式判断输入邮箱格式的 用str.mat

java-Java 如何更好地判断一个字符串是一个字符串打乱顺序后的字符串

问题描述 Java 如何更好地判断一个字符串是一个字符串打乱顺序后的字符串 a="csdnnet"; b="descntn" ---> return true a="hello"; b="oelhg" --->return false 解决方案 Java中如何判断一个字符串的格式java 如何判断一个字符串是数字Java中怎样判断一个字符串是否为数字 解决方案二: 算法思想:首先两个字符串长度必须相等:其次,目标串

如何判断一个字符串数组中是否存在两个字符串序列相等?

问题描述 如何判断一个字符串数组中是否存在两个字符串序列相等?不要用时间复杂度为O(n2)的算法,请问具体要怎么做? 解决方案 解决方案二:publicbooleancompareEqual(String[]strs){booleanflag=false;//字符串数组中是否有两个字符串相等Stringtemp="";for(inti=0;i<strs.length;i++){if(temp.contains(strs[i])){flag=true;break;//若果有重复就直

java-怎么判断一个字符串中含有几个文件名

问题描述 怎么判断一个字符串中含有几个文件名 比如"速查笔记.doc,说明.txt,这是测试啊啊啊啊啊啊啊.txt,dd,s.33.txt".文件名中可以包含 逗号,句号等字符,所以不能用逗号和句号分割.那么难道是判断后缀名吗,但是后缀名何其多. 啊.请问有人有方法吗 解决方案 此题无解!因为txt.txt,txt.txt你说是几个文件?也可能是一个,也可能是两个,这个连伟大的人类都无法区分开,因为你统计的时候,用逗号做分隔符,就导致了,将来无法把他们再次分开,就算比尔盖茨来也不可能有

mysql sql 判断一个字符串是否存在另一字符串中

mysql教程 sql 判断一个字符串是否存在另一字符串中 locate(substr,str,pos) 返回子串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0. mysql> select locate('bar', 'foobarbar');             -> 4 mysql> select locate('xbar', 'foobar');             -> 0 locate(substr,str,pos) 返回子

判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)

比较|性能|字符串 在编程的时候,经常遇到要判断一个字符串中的字符是否全部是数字(0-9),本来是一个很容易实现的功能,但程序员首先会想到的是,这样简单的功能有没有现成的函数可以用呢?VB.NET中有个IsNumeric(object),C#中只有判断单个字符的Char.IsNumber(),IsNumeric可以判断double类型的数字字符串,但无法排除正负号和小数点,如果判断字符串是否是一个数的话用它挺合适,但不能用来判断字符串是否全部由数字组成的.没现成的方法了,只好自己写函数: pub

js判断一个字符串是否包含一个子串的方法_javascript技巧

本文实例讲述了js判断一个字符串是否包含一个子串的方法.分享给大家供大家参考.具体如下: 在我们前端日常开发中,经常会遇到判断一个字符串中是否包含某个子串,这里我们将去探究一些解决此种需求的方法以及正确的使用它们.理想情况下,我们要找的是一个能匹配我们的目的(if x contains y)的方法,并返回true或false. 一.String.prototype.indexOf和String.prototype.lastIndexOf 这两个方法,可能是我们最容易想到的,如果包含子串,则返回大