2011-01-13 146 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)