使用SQL Server中按位於來表示組合狀態

來源:互聯網
上載者:User

以往在做系統許可權或狀態時,都是不同的欄位或一個許可權字串來表示組合許可權,前幾天在跟稅務部門的開發人員共同開發一個系統時,發現他們用一個int欄位來表示多個狀態,用Sybase的按位於“&”進行檢查。於是我回來用SQL Server2000作了一下測試,這種方法在SQL Server上也同樣支援。(小弟以前見識少,大蝦們如果按位於用得多了,也請不要扔雞蛋)

首先我們設計一個按位表示的狀態欄位規則

位置 4 3 2 1
狀態 禁用 顯示 重要 保留

說明:
位置:是一個欄位內的位從右往左的序號
狀態:每個位表示的許可權,1表示有許可權 0表示無許可權
保留位用於其它用途,此樣本裡不使用

樣本資料庫設計

欄位名 欄位類型 預設值
AppObject varchar(64)
Status int 15

Status許可權預設值15,表示狀態欄位中四個位都為1

資料表示例資料

App1 15
App2 15
App3 7
App4 7

使用SQL語句取有相應狀態的對象
1、所有啟用,啟許顯示的對象

Select * from AppObjects Where Status&12=12

2、所有啟用的對象,對含顯示和不顯示的對象

Select * from AppObjects Where Status&8=8

3、所有啟用,重要但不顯示的對象

Select * from AppObjects Where Status&10=10

其它組合依據原理類推。可能有些說不清楚,呵呵,只是寫出來讓初學者知道有這樣一種實現方法。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.