11

ビットフィールドがtrueかfalseかに基づいて条件付きで何かを選択したい。これは私が最初に試した構文でした:

CASE WHEN isSoon THEN 'Soon' ELSE 'Not so soon' END As HowSoon

「WHEN」に続くものはブール式でなければならないので、これは私には理にかなっています。つまりisSoon、ビットフィールドです。しかし、これはうまくいきませんでした。私が最後にやらなければならなかったことは:

CASE WHEN isSoon = 1 THEN 'Soon' ELSE 'Not so soon' END As HowSoon

これは私には冗長に思えます...それif(isSoon == True)は、より直感的ではなくプログラミング言語で書くようなものif(isSoon)であり、穀物に反します。SQLがこのように設定されているのはなぜですか?ビットフィールドが本当にブール値ではないからですか?

4

1 に答える 1

13

ビットデータ型はブール型ではないため、ビットストレージを最適化するために使用されるデータ型です。

文字列「true」と「false」をビットに変換できるという事実は誤解を招く可能性がありますが、MSDNから引用すると、ビットは「1、0、またはNULLの値を取ることができる整数データ型」です。

于 2010-12-02T13:04:05.830 に答える