首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MSSql ISNULL查询

MSSql ISNULL查询
EN

Stack Overflow用户
提问于 2015-10-05 18:28:16
回答 1查看 81关注 0票数 0
代码语言:javascript
复制
select ISNULL(c.name,'any') from (select Name from Orders where ID = '123')

select ISNULL((select Name from Orders where ID = '123'),'any')

Orders表有两列

代码语言:javascript
复制
1. ID
2. Name

订单中的数据是

代码语言:javascript
复制
ID    Name
121   abc
124   def

第一个查询没有返回任何结果,而第二个查询给出了任何结果。有什么不同?

EN

回答 1

Stack Overflow用户

发布于 2015-10-05 18:36:14

第一种形式在其FROM子句中使用子查询作为表源;它可以返回0到多行之间的数据。

对子查询返回的每一行,都会计算ISNULL表达式。但是,如果子查询没有返回任何行,那么最终输出就不包含任何行。

第二种形式使用不带FROM子句的SELECT -这将始终生成一个只包含一行的结果集。然后,它还使用标量子查询(通过在期望标量值的位置引入一个子查询)-必须产生零个或一个结果。如果子查询生成零个结果,则替换为NULL

因此,这两个查询之间的区别在于,第一个查询可以返回零行和多行之间的值,并为每一行计算ISNULL表达式。而第二个查询总是只生成一行,如果子查询返回多个结果,则会产生错误。

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

https://stackoverflow.com/questions/32946357

复制
相关文章

相似问题

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