通過SQL Server的位運算功能巧妙解決多選查詢方法
導(dǎo)讀:1建站知識項目中很多業(yè)務(wù)對象的數(shù)據(jù)表中都具有Status字段,有人使用int型保存Status,有人使用varchar型建設(shè)網(wǎng)站網(wǎng)站推廣優(yōu)化seo。
無論使用int還是varchar,對于Status的多選查詢都是不易應(yīng)對的。舉例,常規(guī)思維下對CustomerStatus的Enum設(shè)置如下:
復(fù)制代碼 代碼如下:
[Serializable] public enum CustomerStatus { New = 0, Active = 1, Overdue = 2, seo網(wǎng)站優(yōu)化軟件Suspended = 3, Closing = 4, Closed = 5 }
在數(shù)據(jù)庫中以int形式存儲了Status值。 如果我在頁面中想一次搜索狀態(tài)為Active,Overdue和Suspended狀態(tài)的Customer,該怎么辦?程序是不是得把這三個狀態(tài)值 拼成字符串傳遞給SQL去處理?雖然能實現(xiàn),但是相當(dāng)?shù)托А?現(xiàn)在給出一個標(biāo)準(zhǔn)解決方案: (1). 所有可能被用作搜索條件的枚舉都應(yīng)按如下位運算方式定義。復(fù)制代碼 高端網(wǎng)站建設(shè)代碼如下:
public enum CustomerStatus { New = 1, Active = 1<<1, Overdue = 1<<2, Suspended = 1<<3, Closing = 1<<4, Closed網(wǎng)站建設(shè)哪家好 = 1<<5 }
(2). 在數(shù)據(jù)庫設(shè)計時,Status的字段必須為int型。 這樣當(dāng)我們做多選查詢時@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ù)行。相關(guān)建設(shè)網(wǎng)站網(wǎng)站推廣優(yōu)化seo。聲明: 本文由我的SEOUC技術(shù)文章主頁發(fā)布于:2023-05-22 ,文章通過SQL Server的位運算功能巧妙解決多選查詢方法主要講述多選,巧妙,SQL網(wǎng)站建設(shè)源碼以及服務(wù)器配置搭建相關(guān)技術(shù)文章。轉(zhuǎn)載請保留鏈接: http://www.bifwcx.com/article/web_4107.html
為你推薦與通過SQL Server的位運算功能巧妙解決多選查詢方法相關(guān)的文章
-
通王TWCMS 2.0.3網(wǎng)站模板程序下載
(126)人喜歡 2024-01-15 -
Windows官方原版在哪里下載
(175)人喜歡 2024-01-15 -
WordPress網(wǎng)站模板發(fā)帖標(biāo)題顏色設(shè)置
(131)人喜歡 2024-01-07 -
修改discuz論壇帖子標(biāo)題80字符的長度限制
(249)人喜歡 2024-01-07 -
wordpress程序調(diào)用不帶超鏈接的Tag標(biāo)簽
(234)人喜歡 2024-01-05 -
網(wǎng)站在不同時期需調(diào)整內(nèi)容更新的方向
(112)人喜歡 2023-08-12