在以下代码段中,我在第 4 行中遇到错误('=' 附近的语法不正确)。我需要在 select 语句中将相等结果显示为列。
declare @five int
set @five = 5
declare @bool bit
set @bool = (@five = 6)
select @five, @bool
结果集应该有两列:5 false
在以下代码段中,我在第 4 行中遇到错误('=' 附近的语法不正确)。我需要在 select 语句中将相等结果显示为列。
declare @five int
set @five = 5
declare @bool bit
set @bool = (@five = 6)
select @five, @bool
结果集应该有两列:5 false
T-SQL 没有真正的布尔类型。这是一个奇怪的情况。这是解决方案:
set @bool = case when @five = 6 then 1 else 0 end
真值表达式在其他语言中是布尔类型,在 T-SQL 中没有类型。您只能在特殊的句法位置使用真值表达式,例如where
,if
和case
.
您需要CASE
围绕该逻辑声明:
declare @five int
set @five = 5
declare @bool bit
set @bool = CASE WHEN @five = 6 THEN 1 ELSE 0 END
select @five, @bool
您可以使用CASE
declare @five int
set @five = 5
select @five, CASE WHEN @five = 6 THEN 1 ELSE 0 END
作为一种奇特的方法-如果您不想使用 CASE 逻辑-按位操作数也可以:
declare @five int
set @five = 5
declare @bool bit
set @bool = (@five ^ 5)
select @five, ~@bool