• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    通过SQL Server的位运算功能巧妙解决多选查询方法
    POST TIME:2021-10-18 18:50
    无论使用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 = 11,
    Overdue = 12,
    Suspended = 13,
    Closing = 14,
    Closed = 15
    }

    (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语言位运算基础知识
    上一篇:SQL语句的执行原理分析
    下一篇:获取星期几的名称
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信