webentwicklung-frage-antwort-db.com.de

Wie speichere ich Dezimalwerte in SQL Server?

Ich versuche, den dezimalen Datentyp einer Spalte in SQL Server herauszufinden. Ich muss in der Lage sein, Werte wie 15,5, 26,9, 24,7, 9,8 usw. Zu speichern

Ich habe dem Spaltendatentyp decimal(18, 0) zugewiesen, konnte diese Werte jedoch nicht speichern.

Was ist der richtige Weg, um dies zu tun?

263
Alex

DECIMAL(18,0) lässt 0 Nachkommastellen zu.

Verwenden Sie stattdessen etwas wie DECIMAL(18,4), das in Ordnung sein sollte!

Das ergibt ein insgesamt 18 Stellen, davon 4 nach dem Komma (und 14 vor dem Komma).

500
marc_s

Sie sollten Folgendes verwenden:

DECIMAL(m,a)

m ist die Anzahl der Stellen, die Ihre Dezimalstelle haben kann.

a ist die maximale Anzahl von Nachkommastellen.

http://www.tsqltutorials.com/datatypes.php enthält Beschreibungen für alle Datentypen.

131
DForck42

Die Einstellungen für Decimal sind die Genauigkeit und Skalierung oder in der normalen Sprache, wie viele Stellen eine Zahl haben kann und wie viele Stellen Sie rechts vom Dezimalpunkt haben möchten.

Wenn Sie also PI in Decimal(18,0) versetzen, wird dies als 3 aufgezeichnet?

Wenn Sie PI in Decimal(18,2) versetzen, wird dies als 3.14 aufgezeichnet.

Wenn Sie PI in Decimal(18,10) setzen, wird 3.1415926535 aufgezeichnet.

42
user99638

Die meiste Zeit verwende ich decimal (9,2), was den geringsten Speicherplatz (5 Bytes) im SQL-Dezimal-Typ beansprucht.


Präzision => Speicherbytes

  • 1 - 9 => 5
  • 10-19 => 9
  • 20-28 => 13
  • 29-38 => 17

Es kann von 0 bis 9 999 999,99 (7 ​​Stellen vor + 2 Stellen hinter dem Komma = insgesamt 9 Stellen) gespeichert werden, was für die meisten Werte groß genug ist.

33

Sie können dies versuchen

decimal(18,1)

Die Länge der Zahlen sollte insgesamt 18 betragen. Die Länge der Zahlen nach dem Komma sollte nur 1 betragen und nicht mehr.

7
Biddut

In MySQL DB erlaubt decimal(4,2) nur die Eingabe von insgesamt 4 Ziffern. Wie Sie in decimal(4,2) sehen, können Sie insgesamt 4 Stellen eingeben, von denen zwei Stellen nach dem Komma stehen sollen.

Wenn Sie also 100.0 in die MySQL-Datenbank eingeben, wird ein Fehler wie "Wert außerhalb des Bereichs für Spalte" angezeigt.

Sie können also nur in diesen Bereich eingeben: von 00.00 bis 99.99.

6
Raja Done

Die anderen Antworten sind richtig. Angenommen, Ihre Beispiele spiegeln die gesamte Bandbreite der von Ihnen gewünschten Möglichkeiten wider, ist DECIMAL(3, 1). Oder DECIMAL(14, 1) lässt insgesamt 14 Stellen zu. Es ist Ihre Aufgabe, darüber nachzudenken, was ausreicht.

3
request.input("name", sql.Decimal, 155.33)              // decimal(18, 0)
request.input("name", sql.Decimal(10), 155.33)          // decimal(10, 0)
request.input("name", sql.Decimal(10, 2), 155.33)       // decimal(10, 2)
0
freya