1. 程式人生 > >sql中位運算的妙用

sql中位運算的妙用

資料庫採用1,2,4,8,16.....等用數字標識(2的n次方)的狀態欄位可以進行累加,對存在的幾種狀態進行組合,從而可形成各種組合狀態

例如:一條記錄該欄位原來的數字是,2,如我們想加上4,則可以用

update t_User set iFlag = iFlag | 4 where UserID = 1

(iFlag 為該欄位名)

例2:在加上4之後我們想去掉4怎麼辦呢,可以這樣實現

update t_User set iFlag = iFlag ^ 4 where UserID = 1

這樣就又把4從該記錄中去掉了.

如果我們想選擇所有為2的記錄該怎麼做呢,可以這樣實現

select * from t_User where iFlag &

 2 = 2

SQL中的位運算不但可以取出各種值,而且我們可以對他對資料進行排序

舉例如下,新聞列表中的一個欄位標識為

1:置頂

2:不置頂

4:推薦

8:不推薦

該欄位的值可以為這4種狀態的組合,如果我們根據一定條件想把所有置頂的放在前面該如何做呢

select * from t_News order by iFlag & 1 desc

這樣我們就把所有置頂的貼子排在前面,當然這裡可以加上一定的Where 條件,在Where 裡也可以加一定的位運算