2013-12-23 64 views
1

我具有其中我驗證某些列返回值1或0。在存儲過程中

的存儲過程代碼塊的存儲過程返回一個位類型是:

, CASE WHEN 
    (PolicyStartMileage < LossMileage) 
    AND (PolicyStartDate <= LossDate) 
    AND (Certified = 0) 
    THEN '1' 
    ELSE '0' 
    END 
    AS Certifiable 

我的問題是,如何返回'1'或'0'作爲位類型?

在我隱藏,我使用:

Boolean.Parse(item.GetDataKeyValue("Certifiable").ToString()); 

,以讀出的值(true或false)。

回答

3

如果你想要數據是一個真正的BIT數據類型,你需要進行轉換,否則它將默認爲數字。

CASE WHEN 
    (PolicyStartMileage < LossMileage) 
    AND (PolicyStartDate <= LossDate) 
    AND (Certified = 0) 
    THEN CAST(1 AS BIT) 
    ELSE CAST(0 AS BIT) 
    END 
    AS Certifiable 

如果做演員,你甚至可以從數據讀取器直接避免瞭解析

+0

那一個工作。 – Csharp

+0

@Csharp我很高興,如果它有效,不要忘記接受它作爲答案。快樂的編碼。 – AgustinCoder

+0

3分鐘後我可以接受... – Csharp

1
, CASE WHEN 
    (PolicyStartMileage < LossMileage) 
    AND (PolicyStartDate <= LossDate) 
    AND (Certified = 0) 
    THEN 1 
    ELSE 0 
    END 
    AS Certifiable 

當您使用引號大約1或0它把它作爲一個字符串不 整數。

+0

您的推薦代碼在我隱藏返回錯誤「字符串未被識別爲一個布爾GetBoolean()方法「 – Csharp

+0

@Csharp剛剛在你的問題中看到過編輯,如果你只是在sql server中使用它,它會起作用。 –

1

嘗試刪除引號''周圍1 and 0,使其表現爲integers而非string。像這樣:

, CASE WHEN 
(PolicyStartMileage < LossMileage) 
AND (PolicyStartDate <= LossDate) 
AND (Certified = 0) 
THEN 1 
ELSE 0 
END 
AS Certifiable