如何选择比较运算符的结果作为类型为BIT的字段?
它如何在C#
中起作用:
bool isGreater = FieldA > FieldB;
它如何在T-SQL
中无效:
SELECT (FieldA > FieldB) AS BIT FROM t
如何正确编写此类任务?
答案 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)