首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用连接选择NVL

使用连接选择NVL
EN

Stack Overflow用户
提问于 2013-04-12 23:11:35
回答 2查看 9K关注 0票数 2

我正在尝试编写一条SQL语句,该语句将从一个表中提取值,并从另一个表中提取相应的值。除非join中使用的值之一为null,否则它不会返回任何内容。我希望脚本在连接为空的情况下返回一个值(如'Nothing')。这个是可能的吗?我知道我可以在select中使用NVL,但是连接呢?下面是我的脚本:

代码语言:javascript
复制
 SELECT  
 i.equip_pk,
 i.request_pk, 
 MY_ALIAS.EQUIP_ALIAS_ID 
 FROM
 tableOne i
 JOIN table2 MY_ALIAS ON (i.EQUIP_PK = MY_ALIAS.EQUIP_PK)
 WHERE i.request_pk=:requestPk 

我使用的是Oracle 10g,但此脚本不会用作PL/SQL。

谢谢你的帮助

杰森

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-12 23:14:31

您可以使用LEFT JOIN。这将返回tableOne中的所有行,当它在第二个表中找不到匹配时,它将返回null。然后你就可以像你提到的那样使用NVL了。

代码语言:javascript
复制
SELECT  
 i.equip_pk,
 i.request_pk, 
 NVL(MY_ALIAS.EQUIP_ALIAS_ID, 'Nothing here')
 FROM tableOne i
 LEFT OUTER JOIN table2 MY_ALIAS ON (i.EQUIP_PK = MY_ALIAS.EQUIP_PK)
 WHERE i.request_pk=:requestPk 

如果您期望来自equip_pk的空值,您可以将NVL应用于。即使它是null,LEFT JOIN仍然会产生正确的结果。

票数 3
EN

Stack Overflow用户

发布于 2013-04-12 23:15:04

代码语言:javascript
复制
SELECT  
 NVL(i.equip_pk, 'Nothing'),
 NVL(i.request_pk, 'Nothing)', 
 MY_ALIAS.EQUIP_ALIAS_ID 
 FROM
 tableOne i
 FULL JOIN table2 MY_ALIAS ON (i.EQUIP_PK = MY_ALIAS.EQUIP_PK)
 WHERE i.request_pk=:requestPk 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15974935

复制
相关文章

相似问题

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