SQL中的布尔表达式

时间:2009-08-10 10:16:47

标签: sql-server

我有两个整数:@RecurremceTemp@WeekDifference

以下行错误:

PRINT @WeekDifference >= @RecurrenceTemp

Incorrect syntax near '>'

并且不会执行。

有人可以告诉我如何编写这样的布尔表达式以包含在Select语句中,即:

Select * 
FROM TableX 
WHERE somevariable = x 
and @WeekDifference >= @RecurrenceTemp

3 个答案:

答案 0 :(得分:2)

谓词不能在表达式中使用,只能在IF和WHILE以及CASE WHEN:

中使用
PRINT CASE WHEN @WeekDifference >= @RecurrenceTemp THEN 1 ELSE 0 END

答案 1 :(得分:0)

从CASE语句返回-1,0或1,具体取决于比较。在SQL Sevrer中,没有布尔数据类型。最近的数据类型是BIT,其值可以是1,0或null。

修改

您的SQL语句

Select * 
FROM TableX 
WHERE somevariable = x 
and @WeekDifference >= @RecurrenceTemp

将选择TableX中的所有字段,其中somevariable = x且WeekDifference变量值大于或等于RecurrenceTemp变量值。这不是你想要的吗?

答案 2 :(得分:0)

你的查询应该运行得很好。

print语句失败的原因是由于SQL Server对布尔表达式的结果与其他数据类型的处理方式截然不同。见Operators

  

与其他SQL Server数据类型不同,a   无法指定布尔数据类型   作为表列的数据类型或   变量, 并且无法返回   结果集。