53

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

它是如何工作的C#

bool isGreater = FieldA > FieldB;

它如何不起作用T-SQL

SELECT (FieldA > FieldB) AS BIT FROM t

如何正确编写这样的任务?

4

3 回答 3

66

您应该使用 CASE 子句:

CASE
    WHEN FieldA > FieldB THEN 1
    ELSE 0
END AS [BIT]
于 2010-02-24T23:02:14.883 回答
45
Select Convert(Bit, Case When FieldA > FieldB Then 1 Else 0 End) As YourBitColumn

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

于 2010-02-24T23:01:51.620 回答
3

你可以使用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)

于 2021-02-04T05:39:45.137 回答