火冰狐 发表于 2017-12-14 13:52:28

SQL Server 枚举异或运算后值存入数据库,读取符合条件的值

  有枚举如下:
  

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");
  
}
  
页: [1]
查看完整版本: SQL Server 枚举异或运算后值存入数据库,读取符合条件的值