在下面的代碼片段中,我收到了第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