2014-01-17 31 views
0

我想出來算出這個查詢,並不能弄清楚它是如何涉及:什麼是與號做的SQL where子句

Where iInteractionOpenReasonID & 16 = 0 

爲iInteractionOpenReasonID可能的值應該是:

0 Unknown 
1 Normal Start 
2 Normal End 
4 Transfer Start 
8 Transfer End 
16 Conference 
32 Inter Queue 
64 Networking 
128 Segment 
256 Compound 
512 Block 
1024 Clip Recording 

我看到的129和145的值(這是不在列表中)和where子句過濾掉145 ...我很困惑

+0

是的,看起來像它,當我搜索我無法找到任何東西,但後來我又沒」知道你可以使用與在實際的搜索,所以我打字出來 – TalkingScientist

回答

2

「的&位運算符執行位邏l在兩個表達式之間,取兩個表達式的每個對應位。當且僅當輸入表達式中的兩個位(用於解析當前位)的值都爲1時,結果中的位才被設置爲1;否則,結果中的位被設置爲0」。

嘗試在MSDN doucmentation這裏尋找。http://msdn.microsoft.com/en-us/library/ms174965.aspx

+0

我現在不是更混亂或更少的困惑。讓我們看看 145是二進制10010001 129是二進制10000001 16是二進制10000 所以,如果我的條款說 其中iInteractionOpenReasonID&16 = 0 和iInteractionOpenReasonID = 129那麼結果這將是1,因爲10000001的前5位數是10000 和iInteractionOpenReasonID = 145,那麼結果將爲0,因爲10010001不包含10000 – TalkingScientist

+0

對不起,它使格式化失敗 – TalkingScientist

+0

@TalkingScientist恐怕我無法解釋它比showdev在鏈接上做的更好。 – RubberDuck