2014-03-25 86 views
1

我想將位列轉換爲整數列,是否需要同時爲此設置一個大小寫並轉換函數?如何將位列轉換爲int

False = 0 
True = 1 
+0

您有什麼需要嘗試的? –

+0

位列的值爲0或1.所以我不知道爲什麼要更改列類型並仍然保留值。你試過了嗎? –

+0

這是一個重複的http://stackoverflow.com/questions/11668431/convert-bit-column-to-integer? – Tim

回答

1

你不需要轉換,因爲bit已經是整數數據類型:

,可以採取的 10,或 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 

編輯:(在此基礎上評論: 「我使用的代碼第一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; 
     } 
    } 
} 
+0

在實體框架中,列必須是Bool,如果我將其更改爲int類型,則投射失敗(我使用Code first EF)。 – loyalflow

+0

@ user1361315我沒有意識到你正在談論EF - 你應該添加一個註釋或標籤來更具體地說明這一點。 – dasblinkenlight

+0

Sql Server在添加之前轉換'BIT',不是?數據類型的位和位在添加操作符中不兼容。 – DMason