Domanda

Quale approccio è meglio utilizzare:

  • BoundField.NullDisplayText non è impostato. NULL caso è prevista query SQL, cioè SELECT ISNULL(amount, 0) FROM table

o

  • BoundField.NullDisplayText è impostato, ad esempio "0,00%". NULL caso non è previsto nella query SQL, cioè SELECT amount FROM table

Cosa ne pensi?

È stato utile?

Soluzione

Si può fare meglio di entrambi?

  • ISNULL serve solo questo singolo caso
  • Formattazione / logica dovrebbe essere nella UI
  • Altri clienti che utilizzano "quantità" può aspettarsi NULL in modo da ora di un "contratto" incoerente
  • 0 significa zero mezzi NULL sconosciuto / niente: 2 stati differenti

Altri suggerimenti

Chiaramente il primo, perché si filtra con ISNULL.

direi che la seconda scelta è migliore. In genere è meglio formato di output nel livello intermedio o livello di presentazione, piuttosto che il database. Così, vorrei tornare null al livello sopra il codice a livello dati e lo hanno decidere cosa fare su schermo, piuttosto che fare la scelta alla base di dati.

Con la conversione di valori null a zero, si sta affermando per tutti i sistemi che utilizzano la query che un valore nullo equivale a un utente di entrare intenzionalmente uno zero. Se questo è effettivamente il caso, allora bene, utilizzare Coalesce invece di IsNull e nulli convertire in zeri. Tuttavia, se c'è anche la più remota possibilità che la query sarà riutilizzato e che l'assenza di un valore potrebbe essere trattato in modo diverso rispetto l'ingresso di uno zero, vorrei tornare nulli per il livello intermedio e lo lascio decidere che cosa fare al riguardo .

La differenza è che 0,00 implica che il campo ha un valore, che NULL implica che il contrario. Dal punto di vista dei dati sanità, pertanto, il primo è corretta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top