在T-SQL查询的SELECT子句中使用比较运算符

时间:2010-02-24 22:59:32

标签: sql sql-server sql-server-2008 tsql comparison-operators

如何选择比较运算符的结果作为类型为BIT的字段?

它如何在C#中起作用:

bool isGreater = FieldA > FieldB;

它如何在T-SQL中无效:

SELECT (FieldA > FieldB) AS BIT FROM t

如何正确编写此类任务?

3 个答案:

答案 0 :(得分:57)

您应该使用CASE子句:

CASE
    WHEN FieldA > FieldB THEN 1
    ELSE 0
END AS [BIT]

答案 1 :(得分:41)

Select Convert(Bit, Case When FieldA > FieldB Then 1 Else 0 End) As YourBitColumn

如果要返回BIT,则需要将转换(或强制转换)转换为位数据类型,否则,SQL会将硬编码常量(1或0)解释为整数。

答案 2 :(得分:1)

您可以使用 IIF 函数。例如:

SELECT IIF(FieldA > FieldB, 1, 0) AS YourBitColumn FROM t

IFF 函数的语法如下:

IIF( boolean_expression, true_value, false_value )

IFF 返回,如果 boolean_expression 为真,则为 true_value,否则为 false_value

有关 IFF 函数的更多信息:Logical Functions - IIF (Transact-SQL)