在SQL中,我有一个标志列,它是一个整数。
我需要使用SQL语句设置标志中的位。相应的C ++语句看起来像 flags&= ~(unsigned long)(0x10000000)
。
我尝试了以下操作:
update [Databases]
set flags = flags & ~0x10000000
但我遇到了一个问题。
Operand data type varbinary is invalid for '~' operator.
然后我尝试查看转换函数会产生什么结果。
select flagInt = CONVERT(int , 0x10000000)
这段代码给我返回了 268435456。
select flagIntInvert = ~CONVERT(int , 0x10000000)
给我返回了 -268435457
与带符号的整数相同。
flag 268435456 int
~flag -268435457 int
然而,我需要未签名版本。
(uint32)flag 268435456 unsigned long
~(uint32)flag 4026531839 unsigned long
有没有一种方法可以将标记设置为0x10000000的反转?谢谢。