2012-07-30 64 views
1

在下面的代码片段中,我收到了第4行错误('='附近的语法不正确)。我需要在select语句中将相等结果显示为一列。T-SQL选择平等结果

declare @five int 
set @five = 5 

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

select @five, @bool 

结果集应该有两列: 5假

回答

5

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

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

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

+0

谢谢大家的回复。他们都工作。尽管@usr给出了最快的回应。 – Omtara 2012-07-30 21:27:04

+0

@usr据我所知只有MySQL有一个“真正的”布尔值。 – 2012-07-30 21:31:02

+0

SQL Server支持[bit](http://msdn.microsoft.com/zh-cn/library/ms177603)数据类型。 (有效值为0,1,'TRUE'和'FALSE')。有一个[boolean](http://msdn.microsoft.com/en-us/library/ms188074.aspx)数据类型(值为TRUE ,FALSE和UNKNOWN),但你无法牢牢抓住一个。 – HABO 2012-07-31 02:58:07

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 
1

你可以做到这一点使用CASE

declare @five int 
set @five = 5 

select @five, CASE WHEN @five = 6 THEN 1 ELSE 0 END 
1

作为一个外来的做法 - 如果你不想使用CASE逻辑 - 按位操作数也起作用:

declare @five int 
set @five = 5 

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

select @five, [email protected]