oracle中NVL的问题,谁能帮我解释下下面三种的区别吗?

select*fromaps_testtwheret.a='a'andt.d!='d';select*fromaps_testtwheret.a='a'andnvl(t.... select * from aps_test t where t.a='a' and t.d!='d';
select * from aps_test t where t.a='a' and nvl(t.d,'')!='d';
select * from aps_test t where t.a='a' and nvl(t.d,' ')!='d';
展开
 我来答
匿名用户
2013-06-03
展开全部
【语法】NVL (expr1, expr2) 
【功能】若expr1为NULL,返回expr2;expr1不为NULL,返回expr1。
注意两者的类型要一致


SQL> SELECT NVL(NULL, 1) AS A, NVL(2, 1) AS B FROM dual;

         A          B
---------- ----------
         1          2



因为   NULL  =  'd'   与   NULL  !=  'd'   都会返回  false.

因此需要用  NVL ,  来把  NULL 的数据, 转换掉。

sxdtgsh
2013-06-03 · TA获得超过2221个赞
知道小有建树答主
回答量:913
采纳率:75%
帮助的人:806万
展开全部
oracle是没有空字符串的'',''等同于null,所以nvl(t.d, '')如果d是null,返回的还是null,所以第三条语句查不出数据。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式