sql - How do I flip a bit using bitwise operator for an int in TSQL? -


i have flags column in sql int.

i need set bit in flag sql statement. corresponding c++ statement looks flags &= ~(unsigned long) (0x10000000).

i tried

update [databases]  set flags = flags & ~0x10000000 

but

operand data type varbinary invalid '~' operator. 

then tried see convert function yeild

select flagint = convert(int , 0x10000000) 

gives me 268435456.

select flagintinvert = ~convert(int , 0x10000000) 

gives me -268435457

which same signed int

flag    268435456   int         ~flag   -268435457  int 

however need unsigned versions

(uint32)flag    268435456   unsigned long ~(uint32)flag   4026531839  unsigned long 

is there way set flag inversion of 0x10000000?

thanks.

setting inversion of flag can used applying bitwise not operator ~. int in sql server signed int.

from can see want active bit in integer , can done using following statements.

assume having integer value 1, i.e. first bit active.

declare @value int = 1; 

and want active third bit use or-operator (|) below:

set @value = @value | 4; 

this render value 5 of int variable.

select @value; 

if want check if third bit set in use following, filter of other active bits:

select @value & 4 

and if want use in comparing use following statement:

if @value & 4 = 4 ... 

hope helps.


Comments

Popular posts from this blog

javascript - jquery or ashx not working -

opencv - DataType<cv::detail::deriv_type>::depth what is it used for -

python 3.x - Mapping specific letters onto a list of words -