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
。