布尔表达式作为transact sql中的列值

时间:2011-03-03 15:42:47

标签: sql sql-server tsql

在大多数RDBMS:es中,这项工作:

select (5 > 3)

并评估为true。它在MS Transact SQL中不起作用,我发现的唯一解决方法是编写:

select case when 5 > 3 then 1 else 0 end

哪种类型很糟糕,因为它更冗长。有没有更好的方法来编写上述类型的支票?

3 个答案:

答案 0 :(得分:2)

如果问题是算术比较:

select (5 - 3)

然后在应用程序级别测试<或=或> 0

答案 1 :(得分:0)

如果您的程序经常需要这样的案例构造,您可以创建一组函数,这些函数将具有Bool_IsGreater(left, right)之类的用户函数,它将返回您想要的0或1。

即使基本列使用,SQL Server也不支持布尔值类型。

如果你需要性能并且那些5和3值来自某些选择查询,你可能想要创建一个新列并通过触发器或其他东西将其值设置为1或0,这可能有助于提高性能。

答案 2 :(得分:0)

您可以将其编写为标量值函数,但在大型数据集上它会非常慢。

相关问题