左连接上的SQL大小写为null
我试图创建一个比较查询,方法是将新数据左键连接到原始数据并比较输出。我的查询非常简单,但似乎无法让它实现我想要的。我知道我不能像其他值那样比较NULL值,但我希望通过执行ISNULL可以得到我需要的结果:左连接上的SQL大小写为null,sql,sql-server,left-join,case,sql-null,Sql,Sql Server,Left Join,Case,Sql Null,我试图创建一个比较查询,方法是将新数据左键连接到原始数据并比较输出。我的查询非常简单,但似乎无法让它实现我想要的。我知道我不能像其他值那样比较NULL值,但我希望通过执行ISNULL可以得到我需要的结果: SELECT O.Ded1, ISNULL(N.Ded2, 0) AS Ded2, CASE WHEN O.Ded1 = N.Ded2 THEN 'Correct' ELSE 'Inco
SELECT O.Ded1,
ISNULL(N.Ded2, 0) AS Ded2,
CASE
WHEN O.Ded1 = N.Ded2 THEN 'Correct'
ELSE 'Incorrect'
END AS 'DED CHECK'
FROM #Tmp_ORIG_DATA O
LEFT JOIN #Tmp_NEW_DATA N ON O.ID = N.ID
我想知道是否需要将这些值插入临时表以使其成为物理值
提前谢谢
很抱歉,我应该添加此查询的结果:
我真的希望支票上写的是正确的
谢谢您明确地检查了空值。需要进行额外的检查,以区分不匹配行和
Ded2
为null
的匹配行
SELECT
O.Ded1,
N.Ded2,
CASE
WHEN O.Ded1 = N.Ded2
OR (N.ID IS NOT NULL AND o.Ded1 IS NULL AND N.Ded2 IS NULL)
THEN 'Correct'
ELSE 'Incorrect'
END AS 'DED CHECK'
FROM #Tmp_ORIG_DATA O
LEFT JOIN #Tmp_NEW_DATA N ON O.ID = N.ID
#Tmp_ORIG_DATA
是如何定义的?NULL
不等于任何其他值,包括NULL
NULL=NULL
返回UNKNOWN,这(重要的)不是真的。如果您需要在两个值都为NULL
的情况下进行比较,那么使用`IS NULL`和和:COL1为NULL,COL2为NULL
。谢谢大家,我刚刚添加了我当前得到的结果的图像。Larnu-原始数据中没有NULL值。所以它比较0和Null,但我认为通过添加ISNULL(..,0)可以解决这个问题?预期的结果很好,但我们也需要样本表数据-我们大多数人希望它是格式化文本,而不是图像。