我需要对一个值和其之前的值进行大量比较。
例如:ReceivedBy
和 PreviousReceivedBy
。
我开始使用以下代码:
WHERE ReceivedBy != PreviousReceivedBy
但如果任意一个值为null,则会返回false(而我需要它返回true)。因此,我将其更新为以下方式:
WHERE ReceivedBy != PreviousReceivedBy
OR (ReceivedBy IS NULL AND PreviousReceivedBy IS NOT NULL)
OR (ReceivedBy IS NOT NULL AND PreviousReceivedBy IS NULL)
这段代码可以正常工作,但是我有一个需要比较的大字段列表。我希望找到一种用更少的代码进行比较的方法(而不是关闭 ANSI_NULLS)。
显然,如果没有其他方法,我将为比较输入所有3行代码。
更新:
以下是我希望的示例。
ReceivedBy = 123
PreviousReceivedBy = 123
Result = FALSE
ReceivedBy = 5
PreviousReceivedBy = 123
Result = TRUE
ReceivedBy = NULL
PreviousReceivedBy = 123
Result = TRUE
ReceivedBy = 123
PreviousReceivedBy = NULL
Result = TRUE
ReceivedBy = NULL
PreviousReceivedBy = NULL
Result = FALSE
WHERE isnull(ReceivedBy,'ReceivedBy is null') != isnull(PreviousReceivedBy,'PreviousReceivedBy is null')
这个怎么样? - Hackermanisnull(ReceivedBy,'ReceivedBy is null')') != isnull(PreviousReceivedBy,'PreviousReceivedBy is null')
会变成TRUE。(可以通过用另一个相等的值替换两个文字来修复。) - Rob at TVSeries.com