c# – 在SQL Server中反汇编位标志枚举

前端之家收集整理的这篇文章主要介绍了c# – 在SQL Server中反汇编位标志枚举前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在sql Server数据库中有一个INT列,它存储与位标志枚举相关的值.例如,如果枚举是:
[Flags()]
public enum UserType
{
    StandardUser = 1,Admin = 2,SuperUser = 4
}

那么sql Server中的列可能保留值为5.

我需要做的是从另一个表中选择所有的行,其中包含有关UserType的更多详细信息,所以使用值为5的示例,我想从ID 1和4的第二个表中选择行.

有没有人知道以这种方式打破数字的聪明方法 – 理想的方法应该在一定程度上递归,因为这是一个非常简化的例子,实际的表/枚举要大得多.

解决方法

SELECT * FROM first_table f 
  JOIN second_table s ON s.ID & f.Flags <> 0 
  WHERE f.something = something

这将从second_table中选择与第一个表中给定行上的任何标志匹配的所有行.

猜你在找的C#相关文章