首页
学习
活动
专区
圈层
工具
发布

NVL功能
EN

Stack Overflow用户
提问于 2012-04-20 15:23:16
回答 2查看 1K关注 0票数 3
代码语言:javascript
复制
select NVL(B.SEQID, A.LVL5_ID) LVL6_ID, NVL(B.NAME, ' ')  LVL6_NAME, A.LVL5_ID
FROM LVL5 A, ABC B WHERE A.LVL5_ID = B.LVL7

上面的查询在我的系统中定义了一个视图。在这里,我想知道为什么使用NVL。

问题是SEQID是一个主键列,不能为空。那么这里有NVL的需求吗?

如果找不到满足where子句的记录,B.SEQID会为空吗?(我知道这不合理,但我不得不问一下)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-20 15:35:01

您的nvl函数所做的是用A.LVL5_ID的值替换它在B.SEQID中遇到的所有null值。

声明B.SEQID是主键会使这个NVL在查询中变得无用,因为主键永远不能包含空值。但是,唯一键肯定可以包含多个空值。

如果where子句没有任何匹配,它将不会返回NULL值,而是返回一个“没有选择行”,这是一个反馈消息。

票数 3
EN

Stack Overflow用户

发布于 2012-04-20 15:33:46

主键约束是唯一键约束加上非空值约束。所以它确保了它下面的列是强制的。因此,您可以愉快地删除NVL。

致以敬意,

罗伯。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10241940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档