如何在两个二进制类型之间的SQL Server中按位异或?

如何在两个二进制类型之间的SQL Server中按位异或?,第1张

如何在两个二进制类型之间的SQL Server中按位异或?

代码块中的所有注释

-- variablesdeclare @vb1 binary(16), @vb2 binary(16), @lo binary(8), @hi binary(8)-- 2 guids to comparedeclare @guid1 uniqueidentifier set @guid1 = '96B4316D-1EA7-4CA3-8D50-FEE8047C1329'declare @guid2 uniqueidentifier set @guid2 = 'FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF'-- split every 8 bytes into a binary(8), which is a bigint, the largest size usable with XORselect @vb1 = @guid1, @vb2 = @guid2-- xor the high and low parts separatelyselect @hi = convert(binary(8), substring(@vb1,1,8)) ^ convert(bigint, substring(@vb2,1,8))select @lo = convert(binary(8), substring(@vb1,9,8)) ^ convert(bigint, substring(@vb2,9,8))-- the final result, concatenating the bytes using char(8) - binary -> uniqueidentifierselect 'A', @guid1 union allselect 'B', @guid2 union allselect 'A XOR B = ', convert(uniqueidentifier, convert(binary(16),convert(char(8),@hi) + convert(char(8),@lo)))


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5144720.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-17
下一篇2022-11-17

发表评论

登录后才能评论

评论列表(0条)

    保存