私はここで私はビットフィールドである必要が計算カラム、式の例を得た:計算列のデータ型をNULLを許可しないビットフィールドに強制するにはどうすればよいですか?
case when ([some_field] < [Some_Other_field])
then 0
else 1
end
この式を用いて計算カラムセットのデータ型がint
あります。
正しいデータ型を強制する最良の方法は何ですか?ケース全体にCONVERT
Withステートメント
、データ型がbit
ですが、それAllow Nulls
CONVERT([bit],
case when (([some_field] < [Some_Other_field])
then 0
else 1
end,
0)
結果式にCONVERT
の文と同じこと、データ型がbit
ですが、それAllow Nulls
case when (([some_field] < [Some_Other_field])
then CONVERT([bit], (0), 0)
else CONVERT([bit], (1), 0)
end
これを行うにはスマートな方法がありますか?
あなたの例と次の代替構文間のパフォーマンスの違いがある場合や、誰もがアイデアを持ってください: '場合([some_field] <[Some_Other_field]) その後、ISNULL(CONVERT(ビット、0) 、0) 他ISNULL(CONVERT(ビット、1)、1) end'? – tomosius
@tomosius - 大規模なスキーム(データアクセスやネットワークオーバーヘッドに関連するI/Oコストなど)では、測定可能な*差は期待できません。私はまたあなたの変種が、避けようとしていた問題を再導入するかもしれないと思っています。 –