我執行MERGE
兩者表在SQL中使用NULL列的最佳方式是什麼?
MERGE indexdecomp.Constituent targ
USING (SELECT ic.ConstituentName
FROM indexdecomp.IndexConstituents ic) src
ON (((targ.Name = src.ConstituentName) OR (targ.Name IS NULL AND src.ConstituentName IS NULL)))
WHEN NOT MATCHED BY TARGET THEN
UPDATE SET
targ.Name = src.ConstituentName
;
,並在我的ON
條款,我有以下斷言:
(targ.Name = src.ConstituentName) OR (targ.Name IS NULL AND src.ConstituentName IS NULL)
我有這樣的斷言,因爲我認爲它的匹配,如果這兩個名稱是等於或者如果兩個名字都爲空。
有沒有更好或更傳統的方法來處理兩個null
列之間的平等?什麼方法會產生最快的執行?
有沒有其他的方式來做到這一點,或者是否有可能通過重寫謂詞來做到這一點?根據MSDN,設置ANSI_NULLS OFF似乎不是未來的證明。 –
是的。根據我最近的編輯創建一個UDF。這樣你就可以獲得一個面向未來和可重用的函數,它比ANSI NULL或extra謂詞解決方案更具可讀性。 –
添加了一個示例UDF作爲我正在談論的具體示例 –