Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Unterschied zwischen numerisch, Float und Dezimal in SQL Server

Verwenden Sie den Schwimmer oder echt Datentypen nur wenn die durch decimal bereitgestellte Genauigkeit (bis zu 38 Ziffern) ist unzureichend

  • Ungefähre numerische Datentypen (siehe Tabelle 3.3) speichern nicht die genauen Werte, die für viele angegeben sind Zahlen; sie speichern extrem dicht Annäherungswert. (Technet)

  • Vermeiden Sie die Verwendung von Float- oder Real-Spalten in Suchbedingungen für WHERE-Klauseln, insbesondere die Operatoren =und <>. Am besten begrenzen Float- und Real-Spalten auf>- oder <-Vergleiche. (Technet)

Daher ist die Wahl von Decimal als Datentyp im Allgemeinen die beste Wahl, wenn

  • Deine Nummer passt hinein. Dezimalgenauigkeit ist 10E38[~ 38 Ziffern]
  • kleinerer Speicherplatz (und vielleicht Rechengeschwindigkeit) von Float ist für Sie nicht wichtig
  • Exaktes numerisches Verhalten ist erforderlich, z. B. in Finanzanwendungen, bei Rundungsoperationen oder bei Gleichheitsprüfungen. (Technet)
  1. Genau Numerische Datentypen dezimal und numerisch – MSDN
  • numerisch =dezimal (5 bis 17 Bytes)
    • wird Decimal in .NET zugeordnet
    • Beide haben (18, 0) als Standardparameter (Präzision, Skalierung) im SQL-Server
    • scale =maximale Anzahl von Dezimalstellen, die rechts vom Dezimalpunkt gespeichert werden können.
    • money(8 Byte) und smallmoney(4 Byte) sind ebenfalls exakte Datentypen und werden in .NET auf Decimal abgebildet und haben 4 Dezimalstellen (MSDN)
  1. Ungefähr Numerischer Datentyp Float und Real – MSDN
  • Real (4 Byte)
    • wird Single in .NET zugeordnet
    • Das ISO-Synonym für real ist float(24)
  • Float (8 Byte)
    • wird Double in .NET zugeordnet

  • Alles genau Numerische Typen erzeugen immer das gleiche Ergebnis, unabhängig davon, welche Art von Prozessorarchitektur verwendet wird oder wie groß die Zahlen sind
  • Der an den Float-Datentyp gelieferte Parameter definiert die Anzahl der Bits, die verwendet werden, um die Mantisse der Gleitkommazahl zu speichern .
  • Ungefährer numerischer Datentyp benötigt normalerweise weniger Speicherplatz und hat eine höhere Geschwindigkeit (bis zu 20x) und Sie sollten auch berücksichtigen, wann sie in .NET konvertiert wurden
  • Was ist der Unterschied zwischen Decimal, Float und Double in C#
  • Dezimal vs. doppelte Geschwindigkeit
  • SQL Server – .NET-Datentypzuordnungen (von MSDN)

Hauptquelle :MCTS-Trainingskit zum Selbststudium (Prüfung 70-433):Microsoft® SQL Server® 2008-Datenbankentwicklung – Kapitel 3 – Tabellen, Datentypen und deklarative Datenintegrität Lektion 1 – Auswählen von Datentypen (Richtlinien) – Seite 93