度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 965|回复: 4
打印 上一主题 下一主题

[分享] Oracle 中如何判断一个字符串是否为数字

[复制链接]

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
跳转到指定楼层
楼主
发表于 2020-4-11 15:13:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法一:通过 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


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
沙发
 楼主| 发表于 2020-4-11 15:13:41 | 只看该作者
回复 支持 反对

使用道具 举报

141

主题

1551

帖子

3573

积分

论坛元老

Rank: 8Rank: 8

积分
3573
板凳
发表于 2020-4-11 17:59:23 | 只看该作者
回复 支持 反对

使用道具 举报

141

主题

1551

帖子

3573

积分

论坛元老

Rank: 8Rank: 8

积分
3573
地板
发表于 2020-4-24 17:59:00 | 只看该作者
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
5#
 楼主| 发表于 2020-4-24 20:49:52 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-17 02:20 , Processed in 0.117612 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表