- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章通过SQL Server的位运算功能巧妙解决多选查询方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
无论使用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要求的数据行.
最后此篇关于通过SQL Server的位运算功能巧妙解决多选查询方法的文章就讲到这里了,如果你想了解更多关于通过SQL Server的位运算功能巧妙解决多选查询方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
这适用于 ubuntu 16.04,但不适用于 17.10 + curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslog
我是一名优秀的程序员,十分优秀!