2011-01-13 176 views
7

我的問題有點泛化,但讓我們假設我想在SQL Server中測試一些表達式。我寫SELECT 1=1SELECT 'a' > 'B'並按F5,希望看到結果,就像我在輸入SELECT 0, 1時一樣。
但我得到一個錯誤,而不是。這是爲什麼?我應該用什麼來即時評估這些表情?SELECT 1 = 1不能正常工作

回答

17

SQL Server沒有布爾數據類型。

您將需要使用SELECT CASE WHEN 1=1 THEN 1 ELSE 0 END

+0

+1不是布爾數據類型?我從未意識到這一點。我很驚訝,但它是有道理的,因爲我總是用一點布爾數據,而你的答案已經有7票... – 2011-01-13 16:28:21

1

你可以使用一個case語句:

select case when 1=1 then 'true' else 'false' end 
select case when 'a'>'B' then 'true' else 'false' end 

或IF ... ELSE

if 1=1 
    select 'true' 
else 
    select 'false' 

if 'a' > 'B' 
    select 'true' 
else 
    select 'false' 
+0

爲什麼downvote有效的答案?事實上,我的答案的前半部分與當前最高票數的答案相同。 – 2011-01-13 15:37:26

13

簡單的方法是select 1 where <test expression here>

1

你可以把你的表情放在之後3210這樣

select 'true' where 1=1 
select 'true' where 1<>1 

可以把它放在IF語句

IF 1+1=2 
BEGIN 
    PRINT 'One and one makes two.' 
END 
0

您可以使用以下方法來打開比較器的輸出到僞布爾:

select isnull((select 'false' where not(1**0=1**)) ,'true') 

或者有一個int作爲返回:

select isnull((select 1 where 1<1) ,0)