ITPUB??ì3
12月微软Hyper-V虚拟化沙龙主题征集
ITPUB论坛 » Oracle开发 » 如何把字段null的值转换成其它的值?

标题: 如何把字段null的值转换成其它的值?
离线 yzf01
中级会员


精华贴数 0
个人空间 0
技术积分 1183 (1529)
社区积分 640 (1252)
注册日期 2001-11-19
论坛徽章:11
2008北京奥运纪念徽章:赛艇2008北京奥运纪念徽章:花样游泳2008北京奥运纪念徽章:曲棍球生肖徽章2007版:猪2008年新春纪念徽章生肖徽章2007版:鸡
      

发表于 2002-1-7 16:07 
如何把字段null的值转换成其它的值?

例如,在SQL Server中可以这样来写:

===================================
Select  isnull(ID,'test') from tableuser;
===================================
请问在Oracle中如何来实现这样的语句?


__________________
我每天都觉得很累。。。。。。
只看该作者    顶部
离线 oldwain
老了,不狂热了。


来自 神秘的地方
精华贴数 19
个人空间 0
技术积分 24848 (39)
社区积分 5106 (297)
注册日期 2001-9-24
论坛徽章:13
管理团队成员ITPUB长老会成员ITPUB元老Heart of PUBITPUB维基人itpub2007年荐股参与纪念徽章
ITPUB新首页上线纪念徽章     

发表于 2002-1-7 16:12 
select nvl(ID, 'test') from tableuser;


__________________
      ▇▇▇▇▇▇▇
      ▇ITPUB▇
       ▇老 ☆ O▇
      ▇灌水专用章▇
      ▇▇▇▇▇▇▇
       我  思   我 在


投资理财| BLOG天地| WIKI世界| WEB 2.0技术|  我的BLOG! | 我的group | 订阅我的blog: RSS
blog最新文章:  (New!)封闭式基金的投资价值
       从喝羊肉汤看基本面选股
       我的投资经历(1 认购证)(2 赣江铃)(3 琼民源)(4 519行情)(5 B股)(6 股改)
只看该作者    顶部
离线 zhuzhichao
炎龙骑士


精华贴数 2
个人空间 0
技术积分 1684 (1015)
社区积分 195 (2469)
注册日期 2001-10-15
论坛徽章:3
ITPUB元老会员2006贡献徽章授权会员   
      

发表于 2002-1-7 16:31 
或者:
Select decode(ID,null,'test') from tableuser;


__________________
zhuzhichao@itpub.net
只看该作者    顶部
离线 hyacinth
学无止境



精华贴数 1
个人空间 0
技术积分 792 (2435)
社区积分 181 (2565)
注册日期 2002-1-7
论坛徽章:2
ITPUB元老授权会员    
      

发表于 2002-1-7 18:08 
炎龙骑士,这样不行呀!

Select decode(ID,2,'test','who')  a from tableuser;

if id = 2 than
a = 'test'
else
a = 'who'
end if;
这样很明确.

空值在oracle里不般是不能直接运算的!结果是不可知的!

对于空值 ,最好明确处理.

用is null 或is not null来判断一下!

NVL 这个函数也是比较常用的!
select NVL(ID,'test') from tableuser;


__________________
没有比人更高的山,        没有比脚更长的路.Email: Hyacinth@itpub.net
只看该作者    顶部
离线 hyacinth
学无止境



精华贴数 1
个人空间 0
技术积分 792 (2435)
社区积分 181 (2565)
注册日期 2002-1-7
论坛徽章:2
ITPUB元老授权会员    
      

发表于 2002-1-7 18:17 
又测试了一下!发现那个不行

test
id   name
1   1
1   


select decode(name,null,'test') a from test

a
---
    (本来是有值的是1,现在是空值了)
test

所以要处理空值,还是用NVL,decode,这个不能这么用!


__________________
没有比人更高的山,        没有比脚更长的路.Email: Hyacinth@itpub.net
只看该作者    顶部
离线 coolsword
落叶飘零


精华贴数 4
个人空间 0
技术积分 3754 (390)
社区积分 2672 (501)
注册日期 2001-10-13
论坛徽章:5
行业板块每日发贴之星     
      

发表于 2002-1-7 23:17 
oldwain的方法呢?


__________________
No Name
只看该作者    顶部
离线 hyacinth
学无止境



精华贴数 1
个人空间 0
技术积分 792 (2435)
社区积分 181 (2565)
注册日期 2002-1-7
论坛徽章:2
ITPUB元老授权会员    
      

发表于 2002-1-8 08:36 
oldwain的方法是正确的!在Oracle里想给Null值一个缺省值,就是用
NVL这个函数!


__________________
没有比人更高的山,        没有比脚更长的路.Email: Hyacinth@itpub.net
只看该作者    顶部
离线 olive
高级会员


精华贴数 1
个人空间 0
技术积分 4252 (339)
社区积分 8313 (192)
注册日期 2002-1-9
论坛徽章:14
会员2007贡献徽章会员2006贡献徽章生肖徽章2007版:猴2008北京奥运纪念徽章:蹦床2008年新春纪念徽章操作系统板块每日发贴之星
操作系统板块每日发贴之星     

发表于 2002-1-9 13:09 
decode也可以,但是要指定缺省值,否则就会出现有值的反而返回null的情况。


__________________
下面这句话是真的
上面那句话是假的
只看该作者    顶部
离线 unitedway
一般会员



精华贴数 0
个人空间 0
技术积分 104 (16256)
社区积分 0 (50837)
注册日期 2002-1-4
论坛徽章:0
      
      

发表于 2002-1-10 04:00 
both nvl, decode can work,  
nvl(name,'test'),
decode(name,null,'test',name)

here is a more powerful one:

nvl2(name,'not null','test')  -->  if name is not null, then return 'not null', if name is null, then return 'test'
available at 8.1.6 up.


只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问