0

どちらのアプローチを使用するのが良いですか:

  • BoundField.NullDisplayText設定されていません。NULL-ケースはSQLクエリで予測されます。SELECT ISNULL(amount, 0) FROM table

また

  • BoundField.NullDisplayTextが設定されます(例:「0.00%」)。NULL-SQLクエリでは大文字と小文字は区別されません。SELECT amount FROM table

どう思いますか?

4

4 に答える 4

3

ISNULLでフィルタリングするため、明らかに最初のものです。

于 2010-05-16T20:19:51.140 に答える
2

私は2番目の選択肢がより良いと主張します。一般に、データベースではなく、中間層またはプレゼンテーション層で出力をフォーマットすることをお勧めします。したがって、データ層コードの上の層にnullを返し、データベースで選択するのではなく、表示について何をするかを決定してもらいたいと思います。

nullをゼロに変換することにより、クエリを使用するすべてのシステムで、nullはユーザーが意図的にゼロを入力したことと同じであると述べていることになります。それが実際に当てはまる場合は、問題ありません。IsNullの代わりにCoalesceを使用して、nullをゼロに変換します。ただし、クエリが再利用される可能性が最も低く、値がない場合はゼロの入力とは異なる方法で処理される可能性がある場合は、中間層にnullを返し、それに対して何をするかを決定させます。 。

于 2010-05-16T23:51:10.657 に答える
1

違いは、0.00はフィールドに値があることを意味し、NULLはその反対を意味することです。したがって、データの健全性の観点からは、前者が正しいです。

于 2010-05-16T20:22:43.817 に答える
1

あなたは両方の最善を尽くすことができますか?

  • ISNULLは、この1つのケースのみを処理します
  • フォーマット/ロジックはUIにある必要があります
  • 「amount」を使用している他のクライアントはNULLを予期している可能性があるため、一貫性のない「コントラクト」があります。
  • 0はゼロを意味し、NULLは不明/なしを意味します:2つの異なる状態
于 2010-05-17T04:36:50.770 に答える