从select查询返回一个布尔值

时间:2011-02-23 08:35:26

标签: c# .net sql-server sql-server-2005 tsql

我想选择布尔值:

SELECT field1, field2, 1 as is_field
FROM TABLE

在Visual Studio 2010中我正在做:

bool b = row.Field<bool>("is_field");

但我得到了例外:

  

指定的演员表无效。

如何将布尔值返回为boolean而不是int

2 个答案:

答案 0 :(得分:20)

从SQL方面,你可以这样做:

SELECT field1, field2, CAST(1 AS BIT) AS is_field
FROM TABLE

强制它作为BIT而不是int返回。那应该是诀窍

<强>更新 您对使用此类CAST有何顾虑? SQL Server在优化时非常棒上面查询的执行计划会显示is_field是一个可以预先评估的常量(这里有一篇相关的文章:http://msdn.microsoft.com/en-us/library/ms175933.aspx)。即使没有它,如果你担心性能,那么你不应该担心它 - 它将非常不成熟。

答案 1 :(得分:4)

Per @ AdaTheDev的建议:

bool b = row.Field<int>("is_field") == 1;