SQL Server(T-SQL)にXOR演算子または同等の関数がありますか?
ビットごとのXOR演算子-キャレット(^)、つまり:
SELECT 170 ^ 75
結果は225です。
論理XORの場合、ANYキーワードとNOT ALLを使用します。
WHERE 5 > ANY (SELECT foo) AND NOT (5 > ALL (SELECT foo))
ブール代数を使用すると、次のことを簡単に示すことができます。
A xor B = (not A and B) or (A and not B)
A B | f = notA and B | g = A and notB | f or g | A xor B
----+----------------+----------------+--------+--------
0 0 | 0 | 0 | 0 | 0
0 1 | 1 | 0 | 1 | 1
1 0 | 0 | 1 | 1 | 1
1 1 | 0 | 0 | 0 | 0
あなたのコメントで明確にされたように、スペースモスは、あなたが例を述べました:WHERE(Note is null)^(ID is null)。ここで与えられた答えに答えるのを選んだ理由はわかりません。そのためにxorが必要な場合、AND/OR同等のロジックを使用する必要があると思います。
WHERE (Note is null and ID is not null) OR (Note is not null and ID is null)
それは次と同等です:
WHERE (Note is null) XOR (ID is null)
「XOR」が使用できない場合。
MS SQLのみの短い形式(SQL Server 2012以降):
1=iif( a=b ,1,0)^iif( c=d ,1,0)
Xor演算子は^
例えば: SELECT A ^ B
ここで、AとBは整数カテゴリデータ型です。
^
http://msdn.Microsoft.com/en-us/library/ms190277.aspx
ページの中央にあるいくつかのコードも参照してください ビット単位のNOT演算子を使用してSQL Serverでビットを反転する方法
<>
は、通常、XORがブール値に適用できる場所であればどこでも使用できます。
あなたのコメントから:
例:WHERE(注はnull)^(IDはnull)
あなたはおそらく試すことができます:
where
(case when Note is null then 1 else 0 end)
<>(case when ID is null then 1 else 0 end)