[解決済み] ビューカラムをNOT NULLにする方法
質問
私は、あるカラムを真か偽だけにしたいビューを作成しようとしています。しかし、私が何をしようとも、SQL Server (2008) は、私のビット列が何らかの形でヌルになりうると信じているようです。
私は "Product" というテーブルを持っており、列 "Status" は次のとおりです。
INT, NULL
. ビューでは、Product の各行に対して、Product.Status 列が 3 に等しい場合は BIT 列を true に設定し、それ以外はビット フィールドを false に設定して行を返したいのです。
SQLの例
SELECT CAST( CASE ISNULL(Status, 0)
WHEN 3 THEN 1
ELSE 0
END AS bit) AS HasStatus
FROM dbo.Product
このクエリをビューとして保存し、オブジェクトエクスプローラでカラムを見てみると、カラムHasStatusに
BIT, NULL
. しかし、これは決して NULL であってはなりません。このカラムを強制的に
NOT NULL
.
もし私が
CAST()
の周りを
CASE
と設定すると、カラムは正しく
NOT NULL
と設定されますが、その後、カラムの型が
INT
に設定され、それは私が望むものではありません。私はそれを
BIT
. :-)
どのように解決するのですか?
クエリを少しアレンジすることで、望むものを実現できます。トリックは
ISNULL
が外側にないと、SQL Server は結果の値が決して
NULL
.
SELECT ISNULL(CAST(
CASE Status
WHEN 3 THEN 1
ELSE 0
END AS bit), 0) AS HasStatus
FROM dbo.Product
私がこれを実際に便利だと思う理由のひとつは、このように ORM を使用していて、結果の値が null 可能な型にマッピングされることを望まない場合です。もしアプリケーションがその値を決してヌルでないと見なすなら、全体的に物事を簡単にすることができます。そうすれば、NULL 例外などを処理するコードを書く必要はありません。
関連
-
executeQuery()ソリューションでデータ操作文を発行できない。
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL Serverでテーブルからカラム名を取得するにはどうすればよいですか?
-
[解決済み] SQL SELECT WHERE フィールドに単語が含まれる場合
-
[解決済み] SQL Server の CASE ステートメントで OR がサポートされていない。
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MHAの高可用性構成とフェイルオーバー
-
windows mysql prompt access denied for user ''@'localhost' to database.
-
[解決済み] SQL Server FOR EACH ループ
-
[解決済み] SQLのカラム名があいまいな場合のクエリエラー
-
[解決済み] 指定されたスキーマにテーブルが存在するかどうかを確認する方法
-
[解決済み] データベースのインデックス作成はどのように行われるのですか?[クローズド]
-
[解決済み] SQL Server 2008を使用してIDENTITY_INSERTをオン/オフする方法は?
-
[解決済み] 文字列の一部をUPDATEおよびREPLACEする。
-
[解決済み] Count()で条件を指定することは可能ですか?
-
[解決済み] SQLサーバーで行を列に効率的に変換する