Come interpreto la precisione e la scala di un numero in un database?

Ho la seguente colonna specificata in un database: decimal (5,2)

Come si interpreta questo?

In base alle proprietà sulla colonna, come visualizzato in SQL Server Management studio, posso vedere che significa: decimale (precisione numerica, scala numerica).

Cosa significano precisione e scala in termini reali?

Sarebbe facile interpretarlo come un decimale con 5 cifre e due cifre decimali … cioè 12345.12

PS Sono stato in grado di determinare la risposta corretta da un collega ma ho avuto grandi difficoltà a trovare una risposta online. Come tale, mi piacerebbe avere la domanda e la risposta documentate qui su StackOverflow per riferimento futuro.

La precisione numerica si riferisce al numero massimo di cifre presenti nel numero.

cioè 1234567,89 ha una precisione di 9

La scala numerica si riferisce al numero massimo di posizioni decimali

cioè 123456.789 ha una scala di 3

Pertanto il valore massimo consentito per decimale (5,2) è 999,99

La precisione di un numero è il numero di cifre.

La scala di un numero è il numero di cifre dopo il punto decimale.

Ciò che è generalmente implicito quando si impostano la precisione e la scala sulla definizione del campo è che rappresentano i valori massimi .

Esempio, un campo decimale definito con precision=5 e scale=2 consentirebbe i seguenti valori:

  • 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)

I seguenti valori non sono consentiti o causerebbero una perdita di dati:

  • 12.345 (p = 5, s = 3) => potrebbe essere troncato in 12.35 (p = 4, s = 2)
  • 1234.56 (p = 6, s = 2) => potrebbe essere troncato in 1234.6 (p = 5, s = 1)
  • 123.456 (p = 6, s = 3) => potrebbe essere troncato in 123.46 (p = 5, s = 2)
  • 123450 (p = 6, s = 0) => fuori intervallo

Si noti che l’intervallo è generalmente definito dalla precisione: |value| < 10^p |value| < 10^p ...

Precisione, scala e lunghezza nella documentazione di SQL Server 2000:

La precisione è il numero di cifre in un numero. Scala è il numero di cifre a destra del punto decimale in un numero. Ad esempio, il numero 123.45 ha una precisione di 5 e una scala di 2.