在 select 语句中用作字段值时,是否可以将 1 或 0 表示为位?
例如
在这个 case 语句(它是 select 语句的一部分)中,ICourseBased 是 int 类型。
case when FC.CourseId is not null then 1 else 0 end as IsCoursedBased
为了让它成为一个位类型,我必须转换两个值。
case when FC.CourseId is not null then cast(1 as bit) else cast(0 as bit) end as IsCoursedBased
是否有一种简便的方法可以将值表示为位类型,而不必每次都进行强制转换?
(我使用的是 MS SQL Server 2005)
cast ( case when FC.CourseId is not null then 1 else 0 end as bit)
CAST 规范是“CAST(表达式 AS 类型)”。CASE 是此上下文中的 表达式 。
如果您有多个这样的表达式,我会声明位变量 @true 和 @false 并使用它们。或者如果你真的想要使用 UDF…
DECLARE @True bit, @False bit; SELECT @True = 1, @False = 0; --can be combined with declare in SQL 2008 SELECT case when FC.CourseId is not null then @True ELSE @False END AS ...