我想将位列转换为整数列,我是否需要同时使用case和convert函数?
False = 0
True = 1
答案 0 :(得分:1)
您不需要转换,因为bit
已经是整数数据类型:
整数数据类型,其值可以为
1
,0
或NULL
。
您可以在整数表达式中使用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;
}
}
}