没有记录返回时,ISNULL()不返回值

时间:2016-05-31 23:47:34

标签: sql tsql

如果没有记录符合ICAO ='YXTO'

SELECT 1, ISNULL((SELECT ID FROM Location WHERE ICAO='YXTO'),2)

返回1,2

尽管

SELECT 1, (SELECT ISNULL(ID,2) FROM Location WHERE ICAO='YXTO')

返回1,NULL

发生了什么事?当没有记录可以作用时,ISNULL不会返回值吗?

1 个答案:

答案 0 :(得分:6)

这是正确的。

在第一种情况下,子查询是标量子查询。如果没有匹配项,则结果为NULL。这是作为ISNULL()的参数传递的,因此返回2

在第二种情况下,子查询也是标量子查询。如果没有匹配项,它也会返回NULL - 没有返回任何行,因此永远不会调用ISNULL()。没有任何东西捕获NULL,因此返回NULL