SQL Server 2008-テーブルの編集:ビット列には「True」または「False」が必要です
-
19-08-2019 - |
質問
質問としてではなく、観察...
ライブアプリケーションのアップグレードを見越して、開発マシンでSQL Server 2008にアップグレードしています。私は一般に標準のT-SQLを使用しており、おそらくANSIの標準SQLからそれほど遠くないので、問題を予想していませんでした。これまでのところとても良いですが、私は非常に単純な変更によって本当に投げられました:
私は、コードのリストを格納するためのシンプルで小さなルックアップテーブルを作成し、現在のデフォルトコードを示すビット列を含めていました。しかし、新しい/変更された「上位200行の編集」オプションを使用し、ビット列に0と1を入力すると、エラーが発生しました:
'セルの無効な値-文字列は 有効なブール値として認識されない '
少し頭を悩ませた後、TrueとFalseを試しましたが、うまくいきました。
したがって、この新しい編集機能では、前の1文字ではなく、4文字または5文字を入力する必要があります。
さらに確認すると、まだ「...where bitval = 1
」を使用できますが、「...where bitval = 'true'
」も使用できるようになりました。ただし、返された結果は、これらのビット列を0または1のままにします。
それはすべて半歩後退しているように聞こえます。世界の終わりではなく、不必要な迷惑。
この問題に関する洞察はありますか?または、SQL Server 2008で他の新しいGotchaがありますか?
2012アップデート: SQL Server 2012をインストールした直後、この動作が「修正」されていることに気付きました。以前と同様に、「上位200行の編集」オプションを使用して、行に直接True / Falseではなく1/0を入力できます。それは小さなことですが、私は幸せです。
解決
彼らがそれを吹き飛ばし、ルールを半分だけ実施したことを除いて、updateステートメントで... = Trueを使用してみて、何が起こるかを確認してください。ずっと行くか、まったくしないかのいずれかです。申し訳ありませんが、そのマークを付けることはできません
他のヒント
BITカラムと比較するために、常に 'True'および 'False'を使用できました...この変更は<!> quot; force <!> quot;フィールドがINTではなくBITであることを明確にするとよいでしょう。
個人的には、C#が<!> quot; if(0)... <!> quot;をサポートしていないことが好きです。わかりやすさを優先しているだけだと思います。
これを見つけただけです(他の要素を準備した後)設計により組み込まれた