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