最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

通过SQLServer的位运算功能巧妙解决多选查询方法

来源:懂视网 责编:小采 时间:2020-11-09 07:10:12
文档

通过SQLServer的位运算功能巧妙解决多选查询方法

通过SQLServer的位运算功能巧妙解决多选查询方法:无论使用int还是varchar,对于Status的多选查询都是不易应对的。举例,常规思维下对CustomerStatus的Enum设置如下: 代码如下: [Serializable] public enum CustomerStatus { New = 0, Active = 1, Overdue = 2, Su
推荐度:
导读通过SQLServer的位运算功能巧妙解决多选查询方法:无论使用int还是varchar,对于Status的多选查询都是不易应对的。举例,常规思维下对CustomerStatus的Enum设置如下: 代码如下: [Serializable] public enum CustomerStatus { New = 0, Active = 1, Overdue = 2, Su

无论使用int还是varchar,对于Status的多选查询都是不易应对的。举例,常规思维下对CustomerStatus的Enum设置如下:
代码如下:
[Serializable]
public enum CustomerStatus
{
New = 0,
Active = 1,
Overdue = 2,
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要求的数据行。

您可能感兴趣的文章:

  • C# 位运算符整理
  • Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
  • shell 基本计算、逻辑运算、位运算详解
  • c语言中用位运算实现加法技巧介绍
  • Java中位运算(移位、位与、或、异或、非) 的简单实例
  • C#枚举中的位运算权限分配浅谈
  • C语言位运算符:与、或、异或、取反、左移与右移详细介绍
  • 详细介绍Python语言中的按位运算符
  • JavaScript按位运算符的应用简析
  • 图文详解C语言位运算基础知识
  • 声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文档

    通过SQLServer的位运算功能巧妙解决多选查询方法

    通过SQLServer的位运算功能巧妙解决多选查询方法:无论使用int还是varchar,对于Status的多选查询都是不易应对的。举例,常规思维下对CustomerStatus的Enum设置如下: 代码如下: [Serializable] public enum CustomerStatus { New = 0, Active = 1, Overdue = 2, Su
    推荐度:
    标签: sql sqlserver 位运算
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top