Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Différence entre numérique, flottant et décimal dans SQL Server

utiliser le flottant ou réel types de données uniquement si la précision fournie par décimal (jusqu'à 38 chiffres) est insuffisant

  • Les types de données numériques approximatifs (voir tableau 3.3) ne stockent pas les valeurs exactes spécifiées pour beaucoup Nombres; ils stockent un nombre extrêmement proche approximation de la valeur.(Technet)

  • Évitez d'utiliser des colonnes flottantes ou réelles dans les conditions de recherche de la clause WHERE, en particulier les opérateurs =et <>. Il est préférable de limiter les colonnes float et real aux comparaisons> ou <. (TechNet)

donc généralement choisir Décimal comme type de données est le meilleur pari si

  • votre numéro peut y tenir. Précision décimale est 10E38[~ 38 chiffres]
  • un espace de stockage plus petit (et peut-être une vitesse de calcul) de Float n'est pas important pour vous
  • un comportement numérique exact est requis, comme dans les applications financières, dans les opérations impliquant des arrondis ou dans les vérifications d'égalité. (TechNet)
  1. Exact Types de données numériques décimal et numérique - MSDN
  • numérique =décimal (5 à 17 octets)
    • sera mappé sur Decimal dans .NET
    • les deux ont (18, 0) comme paramètres par défaut (précision, échelle) dans le serveur SQL
    • échelle =nombre maximum de chiffres décimaux pouvant être stockés à droite de la virgule.
    • money(8 octets) et smallmoney(4 octets) sont également des types de données exacts et seront mappés sur décimal dans .NET et auront 4 points décimaux (MSDN)
  1. Approximatif Type de données numériques float et real - MSDN
  • réel (4 octets)
    • sera mappé sur Single dans .NET
    • Le synonyme ISO de real est float(24)
  • flottant (8 octets)
    • sera mappé sur Double dans .NET

  • Tous exacts les types numériques produisent toujours le même résultat, quel que soit le type d'architecture de processeur utilisé ou l'ampleur des nombres
  • Le paramètre fourni au type de données float définit le nombre de bits utilisés pour stocker la mantisse du nombre à virgule flottante .
  • Le type de données numérique approximatif utilise généralement moins de stockage et a une meilleure vitesse (jusqu'à 20 x) et vous devez également tenir compte du moment où ils ont été convertis en .NET
  • Quelle est la différence entre Decimal, Float et Double en C#
  • Décimale contre double vitesse
  • SQL Server - Mappages de types de données .NET (à partir de MSDN)

source principale :Kit de formation auto-rythmée MCTS (examen 70-433) :Développement de bases de données Microsoft® SQL Server® 2008 - Chapitre 3 - Tables, types de données et intégrité déclarative des données - Leçon 1 - Choix des types de données (directives) - Page 93