在下面的代码片段中,我收到了第4行错误('='附近的语法不正确)。我需要在select语句中将相等结果显示为一列。T-SQL选择平等结果
declare @five int
set @five = 5
declare @bool bit
set @bool = (@five = 6)
select @five, @bool
结果集应该有两列: 5假
在下面的代码片段中,我收到了第4行错误('='附近的语法不正确)。我需要在select语句中将相等结果显示为一列。T-SQL选择平等结果
declare @five int
set @five = 5
declare @bool bit
set @bool = (@five = 6)
select @five, @bool
结果集应该有两列: 5假
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, [email protected]
谢谢大家的回复。他们都工作。尽管@usr给出了最快的回应。 – Omtara 2012-07-30 21:27:04
@usr据我所知只有MySQL有一个“真正的”布尔值。 – 2012-07-30 21:31:02
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