zoukankan      html  css  js  c++  java
  • 使用SQL Server中按位于来表示组合状态

    以往在做系统权限或状态时,都是不同的字段或一个权限字符串来表示组合权限,前几天在跟税务部门的开发人员共同开发一个系统时,发现他们用一个int字段来表示多个状态,用Sybase的按位于“&”进行检查。于是我回来用SQL Server2000作了一下测试,这种方法在SQL Server上也同样支持。(小弟以前见识少,大虾们如果按位于用得多了,也请不要扔鸡蛋

    首先我们设计一个按位表示的状态字段规则

    位置 4 3 2 1
    状态 禁用 显示 重要 保留

    说明:
    位置:是一个字段内的位从右往左的序号
    状态:每个位表示的权限,1表示有权限 0表示无权限
    保留位用于其它用途,此示例里不使用

    示例数据库设计
    字段名 字段类型 默认值
    AppObject varchar(64)
    Status int 15
    Status权限默认值15,表示状态字段中四个位都为1

    数据表示例数据
    App1 15
    App2 15
    App3 7
    App4 7

    使用SQL语句取有相应状态的对象
    1、所有启用,启许显示的对象

    Select * from AppObjects Where Status&12=12

    2、所有启用的对象,对含显示和不显示的对象
    Select * from AppObjects Where Status&8=8

    3、所有启用,重要但不显示的对象
    Select * from AppObjects Where Status&10=10

    其它组合依据原理类推。可能有些说不清楚,呵呵,只是写出来让初学者知道有这样一种实现方法。
  • 相关阅读:
    matlab画图-在同一图像中显示多个函数
    matlab简单作图2
    matlab简单作图
    c++ this指针概念
    c++ 静态成员
    C++ 类对象作为类成员
    (C++核心编程 )初始化列表
    (C++核心编程 )点和圆的关系
    (C++核心编程)设计立方体类
    (python基础 函数)
  • 原文地址:https://www.cnblogs.com/baoposhou/p/612326.html
Copyright © 2011-2022 走看看