Ich habe die folgende Spalte in einer Datenbank angegeben: dezimal (5,2)
Wie interpretiert man das?
Anhand der Eigenschaften in der Spalte, die in SQL Server Management Studio angezeigt werden, kann ich sehen, dass dies bedeutet: dezimal (numerische Genauigkeit, numerische Skala).
Was bedeuten Präzision und Skalierung real?
Es wäre einfach, dies als Dezimalstelle mit 5 Stellen und zwei Dezimalstellen zu interpretieren ... dh 12345.12
PS Ich konnte die richtige Antwort von einem Kollegen ermitteln, hatte jedoch große Schwierigkeiten, online eine Antwort zu finden. Daher möchte ich, dass die Frage und Antwort hier im Stackoverflow dokumentiert werden, damit Sie später darauf zurückgreifen können.
Die Genauigkeit einer Zahl ist die Anzahl der Ziffern.
Die Skalierung einer Zahl ist die Anzahl der Stellen nach dem Dezimalpunkt.
Beim Festlegen der Genauigkeit und Skalierung der Felddefinition wird im Allgemeinen impliziert, dass sie Maximalwerte darstellen .
Beispiel: Ein Dezimalfeld, das mit den folgenden Werten definiert ist
precision=5
undscale=2
diese zulässt: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)Die folgenden Werte sind nicht zulässig oder würden einen Datenverlust verursachen:
12.345
(p = 5, s = 3) => könnte abgeschnitten werden in12.35
(p = 4, s = 2)1234.56
(p = 6, s = 2) => könnte abgeschnitten werden in1234.6
(p = 5, s = 1)123.456
(p = 6, s = 3) => könnte abgeschnitten werden in123.46
(p = 5, s = 2)123450
(p = 6, s = 0) => außerhalb des BereichsBeachten Sie, dass der Bereich im Allgemeinen durch die Genauigkeit definiert wird:
|value| < 10^p
...quelle
12345000
? Präzision 5 oder 8? Wenn 5, mit welcher Skala? Skala -3?123450 (p=6,s=0)
außerhalb der Reichweite? 123450 hat 6 Ziffern und keine Ziffern nach einem Punkt?123450 (p=6,s=0)
würde für ein Dezimalfeld mit einer Genauigkeit von 5 außerhalb des Bereichs liegen (wie im Beispiel erwähnt). Weil die Genauigkeit einer Zahl, die Sie in einem Feld speichern möchten, kleiner oder gleich der Genauigkeit des Feldes sein muss.Präzision, Skalierung und Länge in der SQL Server 2000-Dokumentation lauten:
quelle