The new forums will be named Coin Return (based on the most recent vote)! You can check on the status and timeline of the transition to the new forums here.
The Guiding Principles and New Rules document is now in effect.
So can someone enlighten me as to what is happening with this bit of SQL?
(CAST(A.FIELD AS BIGINT) & 2 = 0)
I get that the field is being recast into a bigint, but is the "& 2 =0" part doing some type of base 2 comparison? Making sure it's 2^x or something?
Thanks in advance.
edit - the field in question is of type numeric (10,0)0
edit 2: it's definitely checking to see if the #2 bit is flipped. For example, when casting the field and then doing the "& 2" part, if the number is something like 256 (2^8) the equivalent is '0'. If it's 258, the result would be '2' indication the 2 bit is on.
No idea how this works though, so any clarity would be awesome.
In many languages, T-SQL apparently among them, & means a bitwise AND. x & y means each bit of x is compared with an AND to each bit of y. In your case, it's filtering out the middle two of each group of four numbers, leaving 1,4,5,8,9,12,13,etc.
Edit: Didn't see your edit when I posted. Here's what's going on, slightly more specifically:
2 = 00000010
254 = 11111110
The rightmost bit has two zeros, so that's zero. The second bit in the two numbers is both 1, so that's a 1. The rest of the them have a one and a zero, leaving zero (since this is an AND operation).
That leaves 00000010, which is 2.
In many languages, T-SQL apparently among them, & means a bitwise AND. x & y means each bit of x is compared with an AND to each bit of y. In your case, it's filtering out the middle two of each group of four numbers, leaving 1,4,5,8,9,12,13,etc.
Edit: Didn't see your edit when I posted. Here's what's going on, slightly more specifically:
2 = 00000010
254 = 11111110
The rightmost bit has two zeros, so that's zero. The second bit in the two numbers is both 1, so that's a 1. The rest of the them have a one and a zero, leaving zero (since this is an AND operation).
That leaves 00000010, which is 2.
Thanks JHunz - I was caught up thinking '&' was the operator for concatenating strings - totally whiffed on the fact that it's a bitwise operator.
Posts
Edit: Didn't see your edit when I posted. Here's what's going on, slightly more specifically:
2 = 00000010
254 = 11111110
The rightmost bit has two zeros, so that's zero. The second bit in the two numbers is both 1, so that's a 1. The rest of the them have a one and a zero, leaving zero (since this is an AND operation).
That leaves 00000010, which is 2.
Thanks JHunz - I was caught up thinking '&' was the operator for concatenating strings - totally whiffed on the fact that it's a bitwise operator.
Thanks!!!