T-SQL选择平等结果

时间:2012-07-30 21:16:29

标签: sql-server tsql

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

declare @five int
set @five = 5

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

select @five, @bool

结果集应该有两列: 5假

4 个答案:

答案 0 :(得分:5)

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

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

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

答案 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