共計 918 個字符,預(yù)計需要花費 3 分鐘才能閱讀完成。
本篇文章為大家展示了如何通過 SQL Server 的位運算功能巧妙解決多選查詢方法,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
無論使用 int 還是 varchar,對于 Status 的多選查詢都是不易應(yīng)對的。舉例,常規(guī)思維下對 CustomerStatus 的 Enum 設(shè)置如下:復(fù)制代碼 代碼如下:
[Serializable] public enum CustomerStatus {New = 0, Active = 1, Overdue = 2, Suspended = 3, Closing = 4, Closed = 5}
在數(shù)據(jù)庫中以 int 形式存儲了 Status 值。如果我在頁面中想一次搜索狀態(tài)為 Active,Overdue 和 Suspended 狀態(tài)的 Customer,該怎么辦?程序是不是得把這三個狀態(tài)值 拼成字符串傳遞給 SQL 去處理?雖然能實現(xiàn),但是相當?shù)托А,F(xiàn)在給出一個標準解決方案:(1). 所有可能被用作搜索條件的枚舉都應(yīng)按如下位運算方式定義。復(fù)制代碼 代碼如下:
public enum CustomerStatus {New = 1, Active = 1 1, Overdue = 1 2, Suspended = 1 3, Closing = 1 4, Closed = 1 5}
(2). 在數(shù)據(jù)庫設(shè)計時,Status 的字段必須為 int 型。這樣當我們做多選查詢時 @Status 的 Value= CustomerStatus.Active | CustomerStatus. Overdue| CustomerStatus. Suspended (3). 查詢語句如下:復(fù)制代碼 代碼如下:
Select * From Customer Where [Status] @Status = [Status]
如果 @Status 可為 null 時,復(fù)制代碼 代碼如下:
Select * From Customer Where (@Status is null Or [Status] @Status = [Status])
用這樣一條簡單的語句,就可以獲取到所有符合 @Status 要求的數(shù)據(jù)行。
上述內(nèi)容就是如何通過 SQL Server 的位運算功能巧妙解決多選查詢方法,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。