SQL Umwandlung von int in dezimal

8

Ich habe zwei Spalten in einer Tabelle, die mit ganzzahligen Werten gefüllt sind. Für jeden Datensatz möchte ich die Werte dieser beiden Spalten teilen und die Ausgabe so formatieren, dass der Dezimalpunkt an Stellen nach rechts verschoben wird.

Wenn zum Beispiel die Werte der beiden Spalten für einen Datensatz 4 und 1 sind und ich 1 durch 4 teilen möchte (also 1/4), dann soll die Ausgabe 25,00 sein.

Hier ist das letzte, was ich vor ein paar Jahren versucht habe:

%Vor%

Ich war nicht in der Lage, eine syntaktische Erklärung der CAST-Funktion zu finden, um zu sehen, was der übergebene Parameter für die Dezimalzahl darstellt. Wenn ich es ändere, ändert es manchmal die Anzahl der Stellen rechts von der Dezimalstelle, aber die Ergebnisse sind nicht immer das, was ich erwarte, also würde ich gerne eine kleine Hilfe dazu bekommen.

    
Darren 10.04.2012, 20:45
quelle

4 Antworten

18

Schreib es so:

%Vor%     
Magnus 10.04.2012, 20:55
quelle
2

DECIMAL(2) ist eine Dezimalzahl von 2 Ziffern vor und keine Nachkommastellen. Das erlaubt nicht, Ziffern nach Dezimalpunkt zu haben!

Die DECIMAL(p,s) -Spezifikation definiert die Anzahl der Ziffern ( p ) und die Anzahl der Nachkommastellen ( s ) (wobei s nicht größer als p und 0 ist, wenn er weggelassen wird ).

Sie müssen etwas wie DECIMAL(4,2) verwenden ( 4 Ziffern insgesamt - 2 davon nach dem Komma; also also: auch 2 vor dem Komma ) oder etwas ähnliches - einige Ziffern davor und einige nach dem Komma - dann sehen Sie Ihr gewünschtes Ergebnis!

Details zum DECIMAL -Typ und seiner Syntax finden Sie im Thema zu MSDN Books Online unter dezimal und numerisch

    
marc_s 10.04.2012 20:49
quelle
2

Es gibt tatsächlich ein paar Parameter ..

%Vor%

wo

  • p steht für die "Genauigkeit" - die Gesamtzahl der Ziffern vor und nach dem Dezimalzeichen.
  • s steht für "scale" - die Anzahl der Stellen nach dem Dezimalzeichen.

Indem Sie nur einen Parameter angeben, geben Sie nur die Genauigkeit an.

Siehe MDSN .

    
AdaTheDev 10.04.2012 20:50
quelle
1

von book-online für dezimalen Datentyp: Numerische Datentypen mit fester Genauigkeit und Skalierung

dezimal [(p [, s])] und numerisch [(p [, s])] Feste Präzision und Maßstabszahlen. Wenn maximale Genauigkeit verwendet wird, sind gültige Werte von - 10 ^ 38 +1 bis 10 ^ 38 - 1. Die SQL-92-Synonyme für Dezimalzahlen sind Dez und Dez (p, s). numerisch ist funktional äquivalent zu dezimal.

p (Genauigkeit) Die maximale Gesamtzahl der Dezimalstellen, die sowohl links als auch rechts vom Dezimalpunkt gespeichert werden können. Die Genauigkeit muss ein Wert von 1 bis maximal 38 sein. Die Standardgenauigkeit ist 18.

s (Skala) Die maximale Anzahl der Dezimalstellen, die rechts vom Dezimalpunkt gespeichert werden können. Maßstab muss ein Wert von 0 bis p sein. Skalierung kann nur angegeben werden, wenn Genauigkeit angegeben ist. Die Standardskalierung ist 0; daher gilt 0 & lt; = s & lt; = p. Die maximale Speichergröße hängt von der Genauigkeit ab.

    
automatic 10.04.2012 20:53
quelle

Tags und Links