我想打印一个简单的陈述 打印(1 = 1),我希望结果为TRUE或1但是sql server告诉我: '='附近的语法不正确。 那是为什么?
类似的声明会发生同样的事情
declare @test bit
set @test = (1=1)
总结如何在不使用IF语句的情况下“看到”从比较中返回的内容
更新:我问的原因是因为我正在尝试调试以下语句的原因
declare @AgingAmount smallint
set @AgingAmount = 500
select Amount, datediff(day,Batch.SubmitDate,getdate()) as Aging from myreporrt
where datediff(day,Batch.SubmitDate,getdate()) > @AgingAmount
即使老化300,也会返回所有行 所以我想测试一下dateiff(day,datesubmited,getdate())> 500返回true或false但无法找到如何显示此比较结果的方法。
答案 0 :(得分:6)
虽然SQL Server具有boolean
类型的概念,并且它理解在boolean
和IF
子句中解析为WHERE
的表达式,但它不支持声明boolean
个变量或参数。 bit
数据类型无法直接存储boolean
表达式的结果,即使它看起来很可疑。
离您最近的boolean
数据类型是:
-- Store the result of a boolean test.
declare @result bit
select @result = case when <boolean expression> then 1 else 0 end
-- Make use of the above result somewhere else.
if @result = 1
...
else
...
为了增加混淆,SQL Server Management Studio在显示结果时会将bit
视为boolean
,而当将数据传回时,ADO.NET会将bit
映射到System.Boolean
。类推。
更新:要回答您的最新问题,请使用case when ... then 1 else 0 end
声明中的select
语法。