因此,我们在DWH环境中使用SQL Server,并且比较源和目标之间的值以相应地更新值。在某些Merge语句中,我们将匹配条件与intersect语句一起应用,但是在某些情况下,我们直接使用update并检查OR条件。
但是,由于有时我们可能需要比较可为空的字段,所以这会引起一些问题。
我们尝试了以下3种选择:
我们可以对具有匹配和相交的Merge语句使用类似的方法,但是我们注意到这对于数百万条记录不是最佳的。
还有其他可行的选择可以实现吗?
答案 0 :(得分:1)
请尝试以下CASE WHEN代码示例:
;WITH CTE AS
(
SELECT *,
CASE WHEN ColA IS NULL AND ColB IS NULL THEN 'Equal'
WHEN ColB IS NOT NULL AND ColB IS NOT NULL
THEN CASE WHEN ColA = ColB THEN 'Equal'
ELSE 'Not Equal' END
WHEN ColA IS NULL AND ColB IS NOT NULL THEN 'Not Equal'
WHEN ColB IS NULL AND ColA IS NOT NULL THEN 'Not Equal'
END 'Comparison'
FROM YourTable
)
DELETE FROM CTE WHERE Comparison = 'Not Equal'