【发布时间】:2011-08-25 19:26:13
【问题描述】:
这是我的声明
IF (@UserName IS NULL AND @EditorKey IS NULL) OR (@UserName IS NOT NULL AND @EditorKey IS NOT NULL) BEGIN
RAISERROR ('One of @UserName, @EditorKey must be non-null.', 15, 0)
RETURN
END
我想要的是能够做这样的事情:
IF (@UserName IS NOT NULL) XOR (@EditorKey IS NOT NULL) BEGIN
RAISERROR ('One of @UserName, @EditorKey must be non-null.', 15, 0)
RETURN
END
对于两个参数来说,这没什么大不了的,但有些 proc 有三个或四个,其中只有一个可以传递,其余的应该为 null。
【问题讨论】:
-
您的第一个语句
(a AND b) OR (NOT a AND NOT b)是a EQU b(逻辑等价)的替代,这在逻辑上是XOR的否定。后者表示,例如,像这样:(a AND NOT b) OR (NOT a AND b)或像这样:(a OR b) AND (NOT a OR NOT b)。 -
T-SQL XOR Operator 的可能重复项
标签: tsql