异或校验和 - 重复

时间:2016-01-18 19:02:27

标签: sql sql-server tsql

请参阅下面的SQL查询:

create table checksumtable (name1 varchar(100),name2 varchar(100))
insert into checksumtable values ('Ian','Maria')
insert into checksumtable values ('Maria','Ian')

和下面的SQL:

select checksum1^checksum2 as xorresult from (
select checksum(name1) as checksum1,checksum(name2) as checksum2 from checksumtable ) as checksumoutertable

两行的XORResult是相同的。我不明白这是怎么回事。我理解XOR的原理和真值表,但我不明白XORing校验和如何产生相同的结果。

1 个答案:

答案 0 :(得分:4)

XOR是一个按位运算符,不关心其参数的排序。 A ^ B = B ^ A. CHECKSUM始终会为“Ian”返回相同的值,并且它将始终返回“Maria”的相同值,因此:

CHECKSUM('Ian')^CHECKSUM('Maria') = CHECKSUM('Maria')^CHECKSUM('Ian')