比較演算子の結果をBIT型のフィールドとして選択するにはどうすればよいですか?
それがどのように機能するかC#
:
bool isGreater = FieldA > FieldB;
それがどのように機能しないかT-SQL
:
SELECT (FieldA > FieldB) AS BIT FROM t
そのようなタスクを正しく書く方法は?
比較演算子の結果をBIT型のフィールドとして選択するにはどうすればよいですか?
それがどのように機能するかC#
:
bool isGreater = FieldA > FieldB;
それがどのように機能しないかT-SQL
:
SELECT (FieldA > FieldB) AS BIT FROM t
そのようなタスクを正しく書く方法は?
CASE句を使用する必要があります。
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
BITを返したい場合は、ビットデータ型に変換(またはキャスト)する必要があります。そうでない場合、SQLはハードコードされた定数(1または0)を整数として解釈します。
関数を使用できIIF
ます。例えば:
SELECT IIF(FieldA > FieldB, 1, 0) AS YourBitColumn FROM t
IFF
以下のような関数の構文:
IIF( boolean_expression, true_value, false_value )
IFF
を返しますboolean_expression
。trueの場合はtrue_value
、それ以外の場合は、false_value
関数の詳細IFF
:論理関数-IIF(Transact-SQL)