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