欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2012年01月09日 20:45:08   作者:  
項(xiàng)目中很多業(yè)務(wù)對象的數(shù)據(jù)表中都具有Status字段,有人使用int型保存Status,有人使用varchar型
無論使用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去處理?雖然能實(shí)現(xiàn),但是相當(dāng)?shù)托А?

現(xiàn)在給出一個標(biāo)準(zhǔn)解決方案:
(1). 所有可能被用作搜索條件的枚舉都應(yīng)按如下位運(yùn)算方式定義。
復(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型。
這樣當(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)文章

  • Sql Server中Substring函數(shù)的用法實(shí)例解析

    Sql Server中Substring函數(shù)的用法實(shí)例解析

    在sqlserver中substring函數(shù)是用來處理字符串的,常用于字符串截取了,下面我來給大家介紹下Sql Server中Substring函數(shù)的用法實(shí)例解析,需要的朋友參考下吧
    2016-12-12
  • Mysql8.0.17安裝教程【推薦】

    Mysql8.0.17安裝教程【推薦】

    本文通過圖文并茂的形式給大家介紹了Mysql8.0.17安裝,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • 一次SQL查詢優(yōu)化原理分析(900W+數(shù)據(jù)從17s到300ms)

    一次SQL查詢優(yōu)化原理分析(900W+數(shù)據(jù)從17s到300ms)

    本文主要介紹了一次SQL查詢優(yōu)化原理分析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • SQL Transcation的一些總結(jié)分享

    SQL Transcation的一些總結(jié)分享

    相信大家對于SQL Transcation再熟悉不過,它確保了數(shù)據(jù)庫的數(shù)據(jù)一致性和安全性,尤其在對數(shù)據(jù)執(zhí)行增刪時,如果發(fā)生異常和錯誤它就會觸發(fā)事務(wù)回滾,從而確保了我們數(shù)據(jù)的一致性和安全性,下面我們將通過分四部分介紹事件(Transcation)
    2012-08-08
  • SQL優(yōu)化經(jīng)驗(yàn)總結(jié)

    SQL優(yōu)化經(jīng)驗(yàn)總結(jié)

    這篇文章主要內(nèi)容是SQL優(yōu)化經(jīng)驗(yàn)總結(jié),文章對SQL優(yōu)化進(jìn)行了詳細(xì)介紹,需要的朋友可以參考下
    2015-08-08
  • SqlServer2016模糊匹配的三種方式及效率問題簡析

    SqlServer2016模糊匹配的三種方式及效率問題簡析

    這篇文章主要介紹了SqlServer2016模糊匹配的三種方式及效率問題,結(jié)合實(shí)例形式簡單對比分析了SQL Server2016使用like語句、PATINDEX及CHATINDEX三種方式進(jìn)行模糊匹配的相關(guān)使用方法及執(zhí)行效率,需要的朋友可以參考下
    2018-07-07
  • MySql查詢不區(qū)分大小寫解決方案(兩種)

    MySql查詢不區(qū)分大小寫解決方案(兩種)

    在mysql中查詢數(shù)據(jù)能不區(qū)分大小寫嗎,下面小編給大家通過兩種方案解決MySql查詢不區(qū)分大小寫,有需要的朋友可以借鑒下
    2015-08-08
  • sqlserver連接錯誤之SQL評估期已過的問題解決

    sqlserver連接錯誤之SQL評估期已過的問題解決

    很久沒用sqlserver了,現(xiàn)在出現(xiàn)評估期已過的問題,本文就介紹一下sqlserver連接錯誤之SQL評估期已過的問題解決,文中根據(jù)圖文詳細(xì)介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • SQL Server 總結(jié)復(fù)習(xí)(一)

    SQL Server 總結(jié)復(fù)習(xí)(一)

    寫這篇文章,主要是總結(jié)最近學(xué)到的一些新知識,這些特性不一定是SQLSERVER最新版才有,大多數(shù)是2008新特性,有些甚至是更早。如果有不懂的地方,建議大家去百度谷歌搜搜,本文不做詳細(xì)闡述,有錯誤的地方,歡迎大家批評指正
    2012-08-08
  • sql2000數(shù)據(jù)庫清除重復(fù)數(shù)據(jù)的二種方法

    sql2000數(shù)據(jù)庫清除重復(fù)數(shù)據(jù)的二種方法

    這篇文章主要介紹了sql2000數(shù)據(jù)庫清除重復(fù)數(shù)據(jù)的二種方法,可以使用使用游標(biāo)實(shí)現(xiàn)和sql語句實(shí)現(xiàn),需要的朋友可以參考下
    2014-03-03

最新評論