简单问题!ORACLE中有没有判断一个字符串是否可以转换成数字的函数?

accp 2003-12-25 11:56:20
rt,thanks
...全文
2450 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
LGQDUCKY 2003-12-25
  • 打赏
  • 举报
回复
用ASCII来判断,数字的大小写是相等的,字符就不等:
htp_htp 2003-12-25
  • 打赏
  • 举报
回复
没有
不行就用ascii码
shuangyu 2003-12-25
  • 打赏
  • 举报
回复
可以这样做
ucase(fieldname)=lcase(fieldname)
这样就能得到是数字了,
如果不等就说明里面不仅仅有数字
就不能转换
accp 2003-12-25
  • 打赏
  • 举报
回复
那有点惨,我想在SELECT中取某一字段的值,如果它不是数字(空,''或者字母)的话就返回0,数字的话就返回本值,我不想触发那个EXCEPTION,有没有什么简单的方法?
lianhg 2003-12-25
  • 打赏
  • 举报
回复
没有。如果是在pl/sql ,使用to_char() ,非法的可以触发exception
accp 2003-12-25
  • 打赏
  • 举报
回复
谢谢lianhg,不过觉得那样也太。。。了
刚刚写了一个函数,这样就省事多了,结帐了
create or replace function PARSE_NUMBER
(VAR_VALUE IN VARCHAR)
return NUMBER is
Result NUMBER;
begin
Result := TO_NUMBER(VAR_VALUE);
return Result;
EXCEPTION WHEN others THEN
begin
return 0;
end;
end PARSE_NUMBER;
lianhg 2003-12-25
  • 打赏
  • 举报
回复
可能是“可能是我的数据库中有空值”,那就家NVL函数:
SELECT TO_NUMBER(decode(decode(lower(nvl(sal,0)),upper(nvl(sal,0)),1,0),1,nvl(sal,0),0))
FROM myemp;
accp 2003-12-25
  • 打赏
  • 举报
回复
那加上这两种情况判断的话是不是语句写的就很复杂,我们老大非要我用存存储过程实现,哪位能写一个IS_NUMBER之类的方法让我调用一下就OK?
同时非常感谢楼上做的测试!!
accp 2003-12-25
  • 打赏
  • 举报
回复
可能是我的数据库中有空值,或者如果只有一个空格的话是不是就出错了?
lianhg 2003-12-25
  • 打赏
  • 举报
回复
你上面的代码问题呀?!


=======================================================================
SQL> SELECT TO_NUMBER(decode(decode(lower(sal),upper(sal),1,0),1,sal,0)) FROM my
emp;

TO_NUMBER(DECODE(DECODE(LOWER(SAL),UPPER(SAL),1,0),1,SAL,0))
------------------------------------------------------------
1
2
3
4
5
6
4
5
6
11
11

TO_NUMBER(DECODE(DECODE(LOWER(SAL),UPPER(SAL),1,0),1,SAL,0))
------------------------------------------------------------
0
0
0

已选择14行。

已用时间: 00: 00: 00.00
SQL> select sal from myemp;

SAL
----------
1
2
3
4
5
6
4
5
6
11
11

SAL
----------
a6
6b
a6

已选择14行。

已用时间: 00: 00: 00.00
=======================================================================
accp 2003-12-25
  • 打赏
  • 举报
回复
我这样写执行的时候还是报错说无效的数字,
SELECT TO_NUMBER(decode(decode(lower(N4),upper(N4),1,0),1,N4,0)) FROM TABLE
其中N4是我的字段名,哪位大侠帮写一个,十分感谢,比较急!!

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧