Ho开发者_运维技巧w to select a result of comparison operator as a field with type BIT?
How it does work in C#
:
bool isGreater = FieldA > FieldB;
How it doesn't work in T-SQL
:
SELECT (FieldA > FieldB) AS BIT FROM t
How to write such task properly?
You should use CASE clause:
CASE
WHEN FieldA > FieldB THEN 1
ELSE 0
END AS [BIT]
Select Convert(Bit, Case When FieldA > FieldB Then 1 Else 0 End) As YourBitColumn
If you want to return a BIT, then you need the convert (or cast) to a bit data type, otherwise, SQL would interpret the hard coded constant (1 or 0) as an integer.
You can use IIF
function. For example:
SELECT IIF(FieldA > FieldB, 1, 0) AS YourBitColumn FROM t
IFF
Function's syntax like as below:
IIF( boolean_expression, true_value, false_value )
IFF
returns, If boolean_expression
is true, then true_value
, otherwise false_value
For more information about IFF
function : Logical Functions - IIF (Transact-SQL)
精彩评论