在SQL Server中执行ISNULL
问题描述:
以下是我如何使用ISNULL条件检查学生地址。 它工作正常,但ISNULL函数如何处理空的编码,即第一个条件为空时显示的第二个参数。在SQL Server中执行ISNULL
当第一个条件不为空时它会计算第二个参数的值吗?
select
...
...
(CASE
WHEN st.ADDRESS='Y' THEN st.LOCATION
ELSE
ISNULL(
(SELECT TOP 1 STDLOC.LOCATION FROM STDLOC
INNER JOIN COMLOC ON STKLOC.LOCATION=COMLOC.CODE AND COMLOC.ADDRESS='Y'
WHERE STDLOC.ZIBCODE=st.ZIBCODE)
,(SELECT TOP 1 COMLOC.LOCATION FROM COMLOC COMLOC.ZIBCODE=st.ZIBCODE))
END
) AS STDUDENTLOCATION
FROM STUDENT st
答
ISNULL是一个特定于T-SQL的函数,如果第一个参数为NULL(https://msdn.microsoft.com/en-us/library/ms184325.aspx),它将使用指定的第二个参数作为返回值。
如果要从多个参数中返回第一个非空值,则使用COALESCE函数,这是所有类型的关系数据库都支持的标准函数。
这POST提供了这个问题一个很好的答案:
+0
虽然正确,但我不认为这是个问题。 –
你是问如果第二选择将仅在第一选择返回空发生的呢?顺便说一句,选择没有ORDER BY子句的TOP 1实际上意味着你将得到一个随机记录,因为不保证没有ORDER BY子句返回的行的顺序。 –
如果第一个值不为空Isnull不会检查第二个条件里面的内容? –