请参阅下面的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校验和如何产生相同的结果。
答案 0 :(得分:4)
XOR是一个按位运算符,不关心其参数的排序。 A ^ B = B ^ A. CHECKSUM
始终会为“Ian”返回相同的值,并且它将始终返回“Maria”的相同值,因此:
CHECKSUM('Ian')^CHECKSUM('Maria') = CHECKSUM('Maria')^CHECKSUM('Ian')