我有两个整数:@RecurremceTemp
和@WeekDifference
以下行错误:
PRINT @WeekDifference >= @RecurrenceTemp
Incorrect syntax near '>'
并且不会执行。
有人可以告诉我如何编写这样的布尔表达式以包含在Select语句中,即:
Select *
FROM TableX
WHERE somevariable = x
and @WeekDifference >= @RecurrenceTemp
答案 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 无法指定布尔数据类型 作为表列的数据类型或 变量, 并且无法返回 结果集。