3

null変なリクエストで、値がないとデータベースに入れられません。の代わりにストア プロシージャに何を入れることができるのか疑問に思っていますnull

例えば:

insert into blah (blah1) values (null) 

を使用する代わりに、「blah1」に何もないか空のようなものはありnullますか?

4

6 に答える 6

5

私はこの奇妙な要求に反対します。これはまさにNULLSQL での目的であり、列に欠落している値または適用できない値を示すためのものです。

リクエスタは SQL ロジックに不満を感じていますNULLか?

編集: わかりました、この仕事の割り当てに関する追加の詳細を含む返信を読みました (ところで、通常、回答に詳細情報を投稿するのではなく、元の質問を編集する必要があります)。

すべての列を として宣言しNOT NULL、その列のデータ型のドメインで特別な値を指定して、「値なし」を示す必要があります。選択する適切な値はケースバイケースで異なる場合があります。つまり、ゼロは列で何も意味しない場合がありますが、person_age列では意味がある場合がありitems_in_stockます。

各列の値のない値を文書化する必要があります。しかし、彼らもドキュメンテーションを信じていないと思います。:-(

于 2008-12-03T21:15:14.487 に答える
1

列のデータ型によって異なります。数値 (整数など) の場合はゼロ (0) の場合もありますが、varchar の場合は空の文字列 ("") の場合があります。

NULL は値の不在を示すすべてのデータ型を超越するため、これには NULL が最適であるという他の回答に同意します。したがって、ゼロと空の文字列は回避策/ハックとして機能する可能性がありますが、基本的には実際の値自体であり、「値ではない」以外のビジネス ドメインの意味を持つ可能性があります。

(SQL 言語のみが、NULL の代替として機能する「該当なし」(N/A) 値型をサポートしていれば...)

于 2008-12-03T21:16:00.633 に答える
0

NULL値を使用しないという要件にはある程度の妥当性があります。NULL値は、JOINまたはWHERE句に含まれるフィールド、または集約されるフィールドにある場合、多くの頭痛の種を引き起こす可能性があります。

一部のSQL実装(MSSQLなど)では、NULL可能フィールドをインデックスに含めることができません。

NULLが等しいかどうかが評価されると、MSSQLは特に予期しない動作をします。PaymentDueフィールドのNULL値は、最新のレコードを検索するときにゼロと同じ意味ですか?テーブルに名前があり、誰かにミドルネームがない場合はどうなりますか。空の文字列またはNULLのいずれかを格納できると考えられますが、ミドルネームを持たない人々の包括的なリストを取得するにはどうすればよいでしょうか。

一般的に、私はNULL値を避けることを好みます。数値(ゼロを含む)または文字列(前述の空の文字列を含む)のいずれかを使用して格納するものを表すことができない場合は、格納しようとしているものを詳しく調べる必要があります。おそらく、1つのフィールドで複数のデータを通信しようとしています。

于 2008-12-03T21:58:34.087 に答える
0

null は、保存しているものに対して有効な値ですか?

  • INT32.MaxValue、空の文字列、または "XXXXXXXXXX" のような見張り値を使用し、それが正当な値になることはないと仮定します
  • 挿入すると同時に true を入力するビット列 'Exists' を追加します。

編集:しかし、ええ、要件を変更しようとする方が問題を解決しようとするよりも優れている可能性があるという他の回答に同意します。

于 2008-12-03T21:15:50.367 に答える
0

varchar または同等のフィールドを使用している場合は、空の文字列を使用してください。

int などの数値フィールドを使用している場合は、ユーザーに強制的にデータを入力させる必要があります。それ以外の場合は、NULL を意味する値を考え出します。

私はあなたの状況をうらやましくない。

于 2008-12-03T21:16:33.080 に答える
0

割り当てられた値としての NULL (たとえば、列に挿入される) と、SQL アーティファクトとしての NULL (OUTER JOIN の欠落レコードのフィールドなど) には違いがあります。これは、これらのユーザーにとってはなじみのない概念である可能性があります。多くの人が使用します。単一テーブルのリストを維持するためだけに、アクセス、または任意のデータベースにアクセスします。) 素朴なユーザーが割り当てに別の方法を使用することを好むとしても、私は驚かないでしょう。不快ですが、問題なく動作するはずです。彼らが望むものは何でも使わせてください。

于 2008-12-03T21:28:45.333 に答える