zoukankan      html  css  js  c++  java
  • SQL Server 枚举异或运算后值存入数据库,读取符合条件的值

    有枚举如下:

    [Flags]
        public enum Color
        {
            Red = 1,
            Green = 2,
            Blue = 4,
            White = 8
        }

    定义三个枚举变量,并将值存入数据库:

    Color color0=Color.Red;
    Color color1=Color.Red|Color.Blue;
    Color color2=Color.Red|Color.White;

    将color0(1)、color1(5)、color2(9)三个值存入数据库,通过SQL语句获取颜色中包含Red的所有数据行,读取方法可通过SQL位运算查询。

    SQL语句如下:

    SELECT * FROM TableName WHERE ColumnName & 1=1
    /*或者*/
    SELECT * FROM TableName WHERE ColumnName | 1=ColumnName

     判断是否包含指定枚举:

    | 符号,把所有二进制数据进行合并,有一个或两个1都返回1

    Color color1 = Color color1=Color.Red|Color.Blue; 等于 1|4,等于5

    则:

    color1|Color.Red; 等于5|1,等于5

    color1|Color.Bule; 等于5|4,等于5

    color1|Color.Green; 等于5|2,等于7

    color1|Color.White; 等于5|8,等于13

    if((color1 | Color.Red)==color1)// 或者 (color1 & Color.Red)==Color.Red
    {
        // 进入此处
        MessageBox.Show("包含Red");
    }
    else
    {
       
    }
    
    if((color1 | Color.White)==color1)// 或者 (color1 & Color.White)==Color.White
    {
       
    }
    else
    {
       // 进入此处
       MessageBox.Show("不包含White");
    }
  • 相关阅读:
    Bullet 学习笔记之 btPersistentManifold 及 btManifoldPoint
    Bullet 学习笔记之 btCollisionWorld::performDiscreteCollisionDetection
    Bullet 学习笔记之 btCollisionWorld
    hdu 6617
    codeforces 1247 E
    GYM 101174 A
    GYM 100714 G
    codeforces 1239 C
    牛客挑战赛33D
    codeforces 1238 E
  • 原文地址:https://www.cnblogs.com/ianunspace/p/6278223.html
Copyright © 2011-2022 走看看