通過SQL Server的位運算功能巧妙解決多選查詢方法
導讀:1建站知識項目中很多業務對象的數據表中都具有Status字段,有人使用int型保存Status,有人使用varchar型建設網站網站推廣優化seo。
無論使用int還是varchar,對于Status的多選查詢都是不易應對的。舉例,常規思維下對CustomerStatus的Enum設置如下:
復制代碼 代碼如下:
[Serializable] public enum CustomerStatus { New = 0, Active = 1, Overdue = 2, seo網站優化軟件Suspended = 3, Closing = 4, Closed = 5 }
在數據庫中以int形式存儲了Status值。 如果我在頁面中想一次搜索狀態為Active,Overdue和Suspended狀態的Customer,該怎么辦?程序是不是得把這三個狀態值 拼成字符串傳遞給SQL去處理?雖然能實現,但是相當低效。 現在給出一個標準解決方案: (1). 所有可能被用作搜索條件的枚舉都應按如下位運算方式定義。復制代碼 高端網站建設代碼如下:
public enum CustomerStatus { New = 1, Active = 1<<1, Overdue = 1<<2, Suspended = 1<<3, Closing = 1<<4, Closed網站建設哪家好 = 1<<5 }
(2). 在數據庫設計時,Status的字段必須為int型。 這樣當我們做多選查詢時@Status的Value= CustomerStatus.Active | CustomerStatus. Overdue| CustomerStatus. Suspended (3). 查詢語句如下:復制代碼 代碼如下:
Select * From Customer Where [Status] & @Status = [Status]
如果@Status可為null時,復制代碼 代碼如下:
Select * From Customer Where ( @Status is null Or [Status] & @Status = [Status])
用這樣一條簡單的語句,就可以獲取到所有符合@Status要求的數據行。相關建設網站網站推廣優化seo。聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-22 ,文章通過SQL Server的位運算功能巧妙解決多選查詢方法主要講述多選,巧妙,SQL網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_4107.html