sql >> Base de Datos >  >> RDS >> Sqlserver

Diferencia entre numérico, flotante y decimal en SQL Server

usa el flotador o real tipos de datos solo si la precisión proporcionada por decimal (hasta 38 dígitos) es insuficiente

  • Los tipos de datos numéricos aproximados (consulte la tabla 3.3) no almacenan los valores exactos especificados para muchos números; almacenan una cantidad extremadamente cercana aproximación del valor. (Technet)

  • Evite usar columnas flotantes o reales en las condiciones de búsqueda de la cláusula WHERE, especialmente los operadores =y <>. Es mejor limitar las columnas flotantes y reales a comparaciones> o <. (Tecnet)

por lo que, en general, elegir Decimal como tipo de datos es la mejor apuesta si

  • su número puede caber en él. Precisión decimal es 10E38[~ 38 dígitos]
  • Un espacio de almacenamiento más pequeño (y tal vez una velocidad de cálculo) de Float no es importante para usted
  • se requiere un comportamiento numérico exacto, como en aplicaciones financieras, en operaciones que implican redondeo o en comprobaciones de igualdad. (Tecnet)
  1. Exacto Tipos de datos numéricos decimal y numérico - MSDN
  • numérico =decimal (5 a 17 bytes)
    • se asignará a Decimal en .NET
    • ambos tienen (18, 0) como parámetros predeterminados (precisión, escala) en el servidor SQL
    • escala =número máximo de dígitos decimales que se pueden almacenar a la derecha del punto decimal.
    • money (8 bytes) y smallmoney (4 bytes) también son tipos de datos exactos y se asignarán a decimales en .NET y tendrán 4 puntos decimales (MSDN)
  1. Aproximado Tipo de datos numérico flotante y real - MSDN
  • real (4 bytes)
    • se asignará a Single en .NET
    • El sinónimo ISO de real es float(24)
  • flotante (8 bytes)
    • se asignará a Double en .NET

  • Todo exacto los tipos numéricos siempre producen el mismo resultado, independientemente del tipo de arquitectura de procesador que se utilice o la magnitud de los números
  • El parámetro suministrado al tipo de datos flotante define el número de bits que se utilizan para almacenar la mantisa del número de punto flotante .
  • El tipo de datos numérico aproximado generalmente usa menos almacenamiento y tiene una mejor velocidad (hasta 20x) y también debe considerar cuándo se convirtieron en .NET
  • ¿Cuál es la diferencia entre decimal, flotante y doble en C#?
  • Decimal vs Doble velocidad
  • SQL Server:asignaciones de tipos de datos de .NET (de MSDN)

fuente principal :Kit de capacitación a su propio ritmo de MCTS (Examen 70-433):Desarrollo de bases de datos de Microsoft® SQL Server® 2008 - Capítulo 3 - Tablas, tipos de datos e integridad de datos declarativos Lección 1 - Elección de tipos de datos (directrices) - Página 93