以下是我如何使用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
你是問如果第二選擇將僅在第一選擇返回空發生的呢?順便說一句,選擇沒有ORDER BY子句的TOP 1實際上意味着你將得到一個隨機記錄,因爲不保證沒有ORDER BY子句返回的行的順序。 –
如果第一個值不爲空Isnull不會檢查第二個條件裏面的內容? –