在select语句中用作字段值时,是否可以将1或0表示为位?

例如

在本例中,基于ICourseBased的语句(它是select语句的一部分)的类型为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(表达式为类型)".在这种情况下,本案是一个expression分的案件.

如果你有多个这样的表达式,我会声明bit vars@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 ...

Sql相关问答推荐

Oracle SQL对列进行汇总并在列表底部显示总计

获取家谱树中第一次出现的特定信息,然后停止

表名数组

将有界时间周期作为阶跃函数,其中周期开始返回1,周期结束返回0

SQL更新,在2个额外的表上使用内部连接

前面的语句不喜欢AND LIKE?当try 更新使用ID和日期过滤的表时

我希望以正确的升序获取SQL结果.怎样才能得到它们?

基于唯一值在Access查询中创建计数器

正在try 从SQL获取最新的ID和一个唯一名称

在一个子查询中签入ID';S,如果未返回,则签入另一个子查询

如何用QuestDB生成蜡烛图?

SQL:查询作为子查询或CTE写入的最大和数失败

每个学校 Select N个最新的行,但跳过同一学生的重复行

对现有记录进行分组

带有数组输入参数的Snowflake UDF优化

带聚合函数的 percentile_cont

如何 Select 一列具有最小值而另一列具有给定值的记录?

如何获得上个月和下个月之间的销售额差异

为数组中的每个元素从表中收集最大整数

使用标准SQL 触发更新当前日期