NullDisplayText nel markup vs ISNULL (campo, 0) in SQL?
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?
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.