主頁 > 知識庫 > 通過SQL Server的位運算功能巧妙解決多選查詢方法

通過SQL Server的位運算功能巧妙解決多選查詢方法

熱門標(biāo)簽:蘭州語音外呼系統(tǒng)運營商 最新人工智能電銷機(jī)器人 成都電話外呼系統(tǒng)一般多少錢 陜西電銷外呼系統(tǒng)好用嗎 銀川高頻外呼回?fù)芟到y(tǒng)多少錢 如何做地圖標(biāo)注圖鋪 沒聽見電話機(jī)器人幫你接 數(shù)字匠心電銷機(jī)器人 al智能電話機(jī)器人
無論使用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),但是相當(dāng)?shù)托А?

現(xiàn)在給出一個標(biāo)準(zhǔn)解決方案:
(1). 所有可能被用作搜索條件的枚舉都應(yīng)按如下位運算方式定義。
復(fù)制代碼 代碼如下:

public enum CustomerStatus
{
New = 1,
Active = 11,
Overdue = 12,
Suspended = 13,
Closing = 14,
Closed = 15
}

(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ù)行。
您可能感興趣的文章:
  • C# 位運算符整理
  • Erlang的運算符(比較運算符,數(shù)值運算符,移位運算符,邏輯運算符)
  • shell 基本計算、邏輯運算、位運算詳解
  • c語言中用位運算實現(xiàn)加法技巧介紹
  • Java中位運算(移位、位與、或、異或、非) 的簡單實例
  • C#枚舉中的位運算權(quán)限分配淺談
  • C語言位運算符:與、或、異或、取反、左移與右移詳細(xì)介紹
  • 詳細(xì)介紹Python語言中的按位運算符
  • JavaScript按位運算符的應(yīng)用簡析
  • 圖文詳解C語言位運算基礎(chǔ)知識

標(biāo)簽:朔州 通化 本溪 遼源 鹽城 邢臺 巴彥淖爾 宜春

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《通過SQL Server的位運算功能巧妙解決多選查詢方法》,本文關(guān)鍵詞  通過,SQL,Server,的,位,運算,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《通過SQL Server的位運算功能巧妙解決多選查詢方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于通過SQL Server的位運算功能巧妙解決多選查詢方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章