如何将位列转换为int

时间:2014-03-25 19:37:05

标签: sql sql-server entity-framework

我想将位列转换为整数列,我是否需要同时使用case和convert函数?

False = 0
True = 1

1 个答案:

答案 0 :(得分:1)

您不需要转换,因为bit已经是整数数据类型:

  

整数数据类型,其值可以为10NULL

您可以在整数表达式中使用bit s而无需转换。这是一个简短的演示:

create table demo (b bit, v int);
insert into demo (b, v) values (1,5), (0,4), (1, -2), (0, -5);

SELECT b, v, b+v AS b_plus_v FROM demo

运行此produces以下输出:

B    V  B_PLUS_V
-    -  --------
1    5   6
0    4   4
1   -2  -1
0   -5  -5

编辑:(基于此评论:“我正在使用Code first EF”)

实体框架要求bit列映射到bool字段。解决此要求的一种方法是向实体类引入计算属性以隐藏基础列的“布尔性”,如下所示:

partial class MyEntity {
    // This code assumes that a bool property MyBoolProperty exists,
    // and that it is mapped to the table using EF
    public int MyIntProperty {
        get {
            return MyBoolProperty ? 1 : 0;
        }
        set {
            MyBoolProperty = value != 0;
        }
    }
}