如果没有任何记录与民航组织=“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,空
发生什么事了呢?当没有可操作的记录时,ISNULL不返回值吗?
发布于 2016-05-31 23:50:20
这是正确的。
在第一种情况下,子查询是标量子查询。当没有匹配时,结果是NULL。这将作为参数传递给ISNULL(),因此返回2。
在第二种情况下,子查询也是标量子查询。当没有匹配时,它也返回NULL --没有返回行,所以ISNULL()永远不会被调用。没有捕获NULL,因此返回NULL。
https://stackoverflow.com/questions/37557349
复制相似问题