SELECT 1 = 1不起作用

时间:2011-01-13 15:31:55

标签: sql-server

我的问题有点泛,但是我想说我想在SQL Server中测试一些表达式。我写SELECT 1=1SELECT 'a' > 'B'并按F5,希望看到结果,就像我输入SELECT 0, 1时一样。 但我得到了一个错误。这是为什么?我应该用什么来动态评估这些表达式?

5 个答案:

答案 0 :(得分:19)

SQL Server没有布尔数据类型。

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

答案 1 :(得分:13)

最简单的方法是select 1 where <test expression here>

答案 2 :(得分:2)

你可以把你的表达式放在where之后

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

你可以把它放在IF声明中

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

答案 3 :(得分:1)

您可以使用案例陈述:

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'

答案 4 :(得分:0)

您可以使用以下内容将比较的输出转换为伪布尔值:

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

或者,返回一个int:

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