1

在以下代码段中,我在第 4 行中遇到错误('=' 附近的语法不正确)。我需要在 select 语句中将相等结果显示为列。

declare @five int
set @five = 5

declare @bool bit
set @bool = (@five = 6)

select @five, @bool

结果集应该有两列:5 false

4

4 回答 4

5

T-SQL 没有真正的布尔类型。这是一个奇怪的情况。这是解决方案:

set @bool = case when @five = 6 then 1 else 0 end

真值表达式在其他语言中是布尔类型,在 T-SQL 中没有类型。您只能在特殊的句法位置使用真值表达式,例如where,ifcase.

于 2012-07-30T21:19:23.957 回答
2

您需要CASE围绕该逻辑声明:

declare @five int
set @five = 5

declare @bool bit
set @bool = CASE WHEN @five = 6 THEN 1 ELSE 0 END

select @five, @bool
于 2012-07-30T21:19:46.130 回答
1

您可以使用CASE

declare @five int
set @five = 5

select @five, CASE WHEN @five = 6 THEN 1 ELSE 0 END
于 2012-07-30T21:20:37.077 回答
1

作为一种奇特的方法-如果您不想使用 CASE 逻辑-按位操作数也可以:

declare @five int
set @five = 5

declare @bool bit
set @bool = (@five ^ 5)

select @five, ~@bool
于 2012-07-30T21:33:03.263 回答