database - length - sql server decimal format
¿Cómo interpreto la precisión y la escala de un número en una base de datos? (3)
La precisión de un número es el número de dígitos.
La escala de un número es el número de dígitos después del punto decimal.
Lo que generalmente se implica cuando se configura la precisión y la escala en la definición de campo es que representan valores máximos .
Por ejemplo, un campo decimal definido con precision=5
y scale=2
permitiría los siguientes valores:
-
123.45
(p = 5, s = 2) -
12.34
(p = 4, s = 2) -
12345
(p = 5, s = 0) -
123.4
(p = 4, s = 1) -
0
(p = 0, s = 0)
Los siguientes valores no están permitidos o podrían causar una pérdida de datos:
-
12.345
(p = 5, s = 3) => se podría truncar en12.35
(p = 4, s = 2) -
1234.56
(p = 6, s = 2) => podría truncarse en1234.6
(p = 5, s = 1) -
123.456
(p = 6, s = 3) => se podría truncar en123.46
(p = 5, s = 2) -
123450
(p = 6, s = 0) => fuera de rango
Tenga en cuenta que el rango generalmente se define por la precisión: |value| < 10^p
|value| < 10^p
...
Tengo la siguiente columna especificada en una base de datos: decimal (5,2)
¿Cómo se interpreta esto?
De acuerdo con las propiedades en la columna tal como se ven en el estudio de SQL Server Management, puedo ver que significa: decimal (precisión numérica, escala numérica).
¿Qué significan precisión y escala en términos reales?
Sería fácil interpretar esto como un decimal con 5 dígitos y dos lugares decimales ... ie 12345.12
PD He podido determinar la respuesta correcta de un colega, pero tuve muchas dificultades para encontrar una respuesta en línea. Como tal, me gustaría tener la pregunta y la respuesta documentadas aquí en stackoverflow para futuras referencias.
La precisión numérica se refiere al número máximo de dígitos que están presentes en el número.
Es decir, 1234567.89 tiene una precisión de 9.
La escala numérica se refiere al número máximo de decimales
es decir, 123456.789 tiene una escala de 3
Así, el valor máximo permitido para decimal (5,2) es 999.99
Precisión, escala y longitud en la documentación de SQL Server 2000 lee:
La precisión es el número de dígitos en un número. Escala es el número de dígitos a la derecha del punto decimal en un número. Por ejemplo, el número 123.45 tiene una precisión de 5 y una escala de 2.