zoukankan      html  css  js  c++  java
  • oracle 判断字符串是否是数字

    方法一:通过 To_Number 函数异常来判断
    CREATE OR REPLACE FUNCTION Is_Number (
       str_    VARCHAR2 ) RETURN VARCHAR2   
    IS     
       num_    NUMBER;          
    BEGIN     
      num_ := to_number(str_);         
      RETURN 'Y';     
    EXCEPTION   
       WHEN OTHERS THEN          
          RETURN 'N';     
    END Is_Number;   
    /

    SQL> select Is_Number('12345') from dual;
     
    IS_NUMBER('12345')
    --------------------------------------------------------------------------------
    Y
     
    SQL> select Is_Number('123.45') from dual;
     
    IS_NUMBER('123.45')
    --------------------------------------------------------------------------------
    Y
     
    SQL> select Is_Number('123a') from dual;
     
    IS_NUMBER('123A')
    --------------------------------------------------------------------------------
    N
     
    SQL>

     方法二:通过 translate函数来实现
    SELECT nvl2(translate('123','/1234567890','/'),'CHAR','NUMBER')   
    FROM   dual ;

    SQL> SELECT nvl2(translate('123','/1234567890','/'),'CHAR','NUMBER')
      2  FROM   dual;
     
    NVL2(TRANSLATE('123','/1234567
    ------------------------------
    NUMBER
     
    SQL> 
    SQL> SELECT nvl2(translate('123A','/1234567890','/'),'CHAR','NUMBER')
      2  FROM   dual;
     
    NVL2(TRANSLATE('123A','/123456
    ------------------------------
    CHAR
     
    SQL>

      在实际使用过程中,可以根据情况选用这两种方法。第一种方法的好处是可以判断带小数的数字,而第二种方法只能判断整数。因为如果 translate 函数如果写成 translate('123A','/1234567890.','/') 这种形式是会有问题的。

    SQL> select Is_Number('123.45.6') from dual;
     
    IS_NUMBER('123.45.6')
    --------------------------------------------------------------------------------
    N
     
    SQL> 
    SQL> SELECT nvl2(translate('1234.5.6','/1234567890.','/'),'CHAR','NUMBER')
      2  FROM   dual;
     
    NVL2(TRANSLATE('1234.5.6','/12
    ------------------------------
    NUMBER

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

    SELECT TRANSLATE('2KRW229', '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', '0123456789') --把字符翻译成数字

    "Translate example"

    FROM DUAL;

    Translate example

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

    2229


    参考:https://blog.csdn.net/lzflydream/article/details/42592959

  • 相关阅读:
    微信红包实现算法
    Java中Redis简单入门
    Java之英格玛简单实现以及加密验证码的应用
    Java实现二维码
    String,StringBuffer,StringBuilder个人认为较重要的区别
    Java中Comparable和Comparator你知多少?
    Oracle
    maven下载及安装最详解
    破解路由器
    Activiti工作流学习-----基于5.19.0版本(8)
  • 原文地址:https://www.cnblogs.com/huanlingjisi/p/12372486.html
Copyright © 2011-2022 走看看