Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Differenza tra numerico, float e decimale in SQL Server

usa il flottante o reale tipi di dati solo se la precisione fornita da decimale (fino a 38 cifre) è insufficiente

  • I tipi di dati numerici approssimativi (vedi tabella 3.3) non memorizzano i valori esatti specificati per molti numeri; memorizzano un estremamente vicino approssimazione del valore.(Technet)

  • Evitare di utilizzare colonne float o reali nelle condizioni di ricerca della clausola WHERE, in particolare gli operatori =e <>. È meglio limitare le colonne float e reali a> o

quindi generalmente scegliere Decimale come tipo di dati è la soluzione migliore se

  • il tuo numero può rientrare. Precisione decimale è 10E38[~ 38 cifre]
  • Lo spazio di archiviazione ridotto (e forse la velocità di calcolo) di Float non è importante per te
  • è richiesto un comportamento numerico esatto, ad esempio nelle applicazioni finanziarie, nelle operazioni di arrotondamento o nei controlli di uguaglianza. (Technet)
  1. Esatto Tipi di dati numerici decimale e numerico - MSDN
  • numerico =decimale (da 5 a 17 byte)
    • verrà mappato su Decimal in .NET
    • entrambi hanno (18, 0) come parametri predefiniti (precisione, scala) nel server SQL
    • scala =numero massimo di cifre decimali che possono essere memorizzate a destra del punto decimale.
    • money(8 byte) e smallmoney(4 byte) sono anche tipi di dati esatti e verranno mappati su Decimal in .NET e avranno 4 punti decimali (MSDN)
  1. Approssimativo Tipo di dati numerici float e real - MSDN
  • reale (4 byte)
    • verrà mappato su Single in .NET
    • Il sinonimo ISO di real è float(24)
  • flottante (8 byte)
    • verrà mappato su Double in .NET

  • Tutto esatto i tipi numerici producono sempre lo stesso risultato, indipendentemente dal tipo di architettura del processore utilizzata o dall'entità dei numeri
  • Il parametro fornito al tipo di dati float definisce il numero di bit utilizzati per memorizzare la mantissa del numero in virgola mobile .
  • Il tipo di dati numerico approssimativo di solito utilizza meno spazio di archiviazione e ha una velocità migliore (fino a 20 volte) e dovresti anche considerare quando sono stati convertiti in .NET
  • Qual ​​è la differenza tra Decimal, Float e Double in C#
  • Decimale vs Doppia Velocità
  • SQL Server - Mapping dei tipi di dati .NET (da MSDN)

fonte principale :MCTS Self-Paced Training Kit (Esame 70-433):Sviluppo di database Microsoft® SQL Server® 2008 - Capitolo 3 - Tabelle, tipi di dati e integrità dichiarativa dei dati Lezione 1 - Scelta dei tipi di dati (linee guida) - Pagina 93