oracle数据库里面的字符串转成数字类型,

我想把s.status_name转成数字类型的

    建议你优化一下你的sql,你完全可以不用子查询将那4个表都扫描两遍(等到你数量巨大,效率会很低,你要在开发阶段避免这种情况的发生),你看一下oracle的LAG()和LEAD()统计函数,它可以在一次查询中取出同一字段的前N行的数据和后N行的值

    你的s.status_name字段里是不是字符和数字都有啊,你贴一下,看看有什么规律


给你个例子

create table a (id number,name varchar2(10));

insert into a values (1,'aa');

insert into a values (2,'bb');

insert into a values (3,'cc');

cimmit;

取当前行的前一行数据

select id,name,lag(id,1)over(order by id),lag(name,1)over(order by id) from a where id in (2,3);

取当前行的后一行数据

select id,name,lead(id,1)over(order by id),lead(name,1)over(order by id) from a where id in (2,3);

这个a表的id不就相当于你的l.location_id吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-24

    to_number(s.status_name,'999999')

    .to_number(s.status_name,'999999.99')

    .to_number(s.status_name,'$999999.99')

to_number(),to_date(),to_char()都是有两个参数的,你没用对而已

第2个回答  2013-10-24
to_number(s.status_name)
改成这样就可以了追问

这样不行啊,我刚才试过的

追答

如果字段里面有NULL或者其他非数字型的是不可以的

第3个回答  2013-10-24
用decode函数。

或者用 case when 语句?
相似回答