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

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

原地址:

方法一:通过 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://www.cnblogs.com/JSD1207ZX/p/9386282.html

你可能感兴趣的文章
根据Uri获取文件的绝对路径
查看>>
Flutter 插件开发:以微信SDK为例
查看>>
.NET[C#]中NullReferenceException(未将对象引用到实例)是什么问题?如何修复处理?...
查看>>
边缘控制平面Ambassador全解读
查看>>
Windows Phone 7 利用计时器DispatcherTimer创建时钟
查看>>
程序员最喜爱的12个Android应用开发框架二(转)
查看>>
vim学习与理解
查看>>
DIRECTSHOW在VS2005中PVOID64问题和配置问题
查看>>
MapReduce的模式,算法以及用例
查看>>
《Advanced Linux Programming》读书笔记(1)
查看>>
zabbix agent item
查看>>
一步一步学习SignalR进行实时通信_7_非代理
查看>>
AOL重组为两大业务部门 全球裁员500人
查看>>
字符设备与块设备的区别
查看>>
为什么我弃用GNOME转向KDE(2)
查看>>
Redis学习记录初篇
查看>>
爬虫案例若干-爬取CSDN博文,糗事百科段子以及淘宝的图片
查看>>
Web实时通信技术
查看>>
第三章 计算机及服务器硬件组成结合企业运维场景 总结
查看>>
IntelliJ IDEA解决Tomcal启动报错
查看>>