ISNULL()时没有记录返回

问题描述:

在没有记录ICAO = 'YXTO'ISNULL()时没有记录返回

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

返回一致的情况下不返回值1,2-

鉴于

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

Returns 1,NULL

发生了什么事?当没有记录执行操作时,ISNULL是否不返回值?

这是正确的。

在第一种情况下,子查询是一个标量子查询。当没有匹配时,结果是NULL。这是作为参数传递给ISNULL(),所以返回2

在第二种情况下,子查询也是一个标量子查询。当没有匹配时,它也返回NULL - 没有行返回,因此ISNULL()永远不会被调用。没有什么捕获NULL,因此返回NULL