小编典典

在 SQL Server 中使用常量 1 或 0 隐含位

all

在 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)


阅读 228

收藏
2022-08-21

共1个答案

小编典典

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 ...
2022-08-21