• 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


  • 相关阅读:
    MSSQLSERVER数据库 变量和批处理
    MSSQLSERVER数据库 事务
    MSSQLSERVER数据库 使用C#来操作事务
    MSSQLSERVER数据库 视图
    Delphi中DBGrid行列颜色设置
    C#中调用SQL存储过程(带输入输出参数的例子)
    用Visual C#调用Windows API函数
    c#日期时间的操作的函数总结[转]
    C# 序列化与反序列化
    利用C#事务处理对数据库进行多重操作
  • 原文地址:https://www.cnblogs.com/JSD1207ZX/p/9386282.html
Copyright © 2020-2023  润新知