oracle,有个表列为abc(varcher2),当初想里面存入数字的,当时不小心弄错了数据类型(新手!呜呜~~~)
因为涉及到计算,现在需要把这个列abc数据类型变为 number ,可里头已经存了两个月数据,里面已经有数字、字母、null 、空格,我现在需要把是数字的数据取出来,其他的排除。这个sql语句怎么写啊?很急,求救!
因为涉及到计算,现在需要把这个列abc数据类型变为 number ,可里头已经存了两个月数据,里面已经有数字、字母、null 、空格,我现在需要把是数字的数据取出来,其他的排除。这个sql语句怎么写啊?很急,求救!
解决方案 »
- SYSTEM表空间和SYSAUX表空间99%以上100%未满对数据库访问性能有影响吗?
- 请问怎样让用户无法修改表结构啊?
- 分组又一个问题
- 如何在oracle的图形界面里创建用户
- ORA-01219:数据库未打开。。。如何解决?
- 大家有做过调用PRC*C的DLL方面的吗,能否给给个示例,谢谢!!
- Sqlplus 简单问题
- 在此命令ARCHIVE LOG LIST ,提示权限不够,我在赋权限时,又提示“无法赋权给全局角色”
- 8i与9i数据库之间可以通过实体化视图来同步表吗?
- 如何启动emca,高分求救!!!
- 通过ORACLE 访问(读写) SQL SERVER (求购)
- 怎么在存储过程里读取读取某个xml文件中的某个节点的值?
p_out varchar2(1):='N';
i number;
begin
i:=to_number(p_in);
p_out:='Y';
return p_out;
exception
when others then
p_out:='N';
return p_out;
end;--判断是否是数字:是返回Y不是则返回N
select test_is_number('2B') from dual
然后where语言中使用该条件过滤,
例如字定义的过程是 is_Number,只有是的时候返回一
可以如此写
select sum(to_number(abc)) from table where
is_number(abc)=1
begin
return:=to_number(mynumber);
exception
when others then
return 0;
end to_num;create table temp as select rowid id,to_num(abc) abc from tb;
update tb set abc=null;
alter table drop column abc;
alter table add abc number;
update tb set abc=(select abc from temp where temp.id=tb.rowid);
drop table temp;
begin
return:=to_number(mynumber);
exception
when others then
return 0;
end to_num;alter table add def number;
update tb set def=to_num(abc);
update tb set abc=null;
alter table drop column abc;
update tb set abc=null;
上面这两句可以并成
update tb set abc=null,def=to_num(abc);
begin
return:=to_number(mynumber);
exception
when others then
return 0;
end to_num;
赫赫。假如人家本来就是0呢?嗬嗬,你这样一排除,就出问题了吧!to_number这个函数,
1。对于NULL是不会报错的。返回NULL.
2。对于'1E11'这样的字符串,也是不会报错的。它当成了指数。以上这些,都是不合理的地方。
如果原来是0现在还是返回0。原来是null现在还是返回null。这是没问题的。
不过原来是'00'这样也会返回0,这倒有点问题。至于'1e11'这样的是无法判断的,要根据你自己的情况。你可以说其是数字,你可以说它不是数字。
如果我的表中1e11确实是个浮点数,按你的结论是不是一定要让它返回非数字呢。当然还要谢谢你的指点。确实这个函数不是通用的,还有很多要改进的地方,但放在这个问题中我觉得应该是足够了。
begin
return to_number(mynumber);
exception
when others then
return 0;
end to_num;原句中return后有点错误,前面没发现
begin
return to_number(mynumber);
exception
when others then
return 0;
end to_num;
小弟愚,请指教。
2 begin
3 return to_number(mynumber);
4 exception
5 when others then
6 return 0;
7 end to_num;
8 /函数已创建。已用时间: 00: 00: 00.11
SQL817>