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

59
如何将比较运算符的结果选择为类型为BIT的字段?
在C#中的工作原理是什么?
bool isGreater = FieldA > FieldB;

T-SQL 中它是无法工作的:

SELECT (FieldA > FieldB) AS BIT FROM t

如何正确编写此类任务?
3个回答

70
你应该使用CASE子句:
CASE
    WHEN FieldA > FieldB THEN 1
    ELSE 0
END AS [BIT]

45
Select Convert(Bit, Case When FieldA > FieldB Then 1 Else 0 End) As YourBitColumn
如果您想返回一个 BIT 值,那么您需要转换(或强制转换)为 bit 数据类型,否则,SQL 将把硬编码的常量(1 或 0)解释为整数。

9
您可以使用 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函数的信息,请参考:逻辑函数 - IIF (Transact-SQL)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接