2009-01-14 11 views

Antwort

31

Im Allgemeinen können Sie die Genauigkeit einer Zahl in SQL definieren, indem Sie sie mit Parametern definieren. In den meisten Fällen ist dies NUMERIC(10,2) oder Decimal(10,2) - definiert eine Spalte als eine Zahl mit 10 Ziffern insgesamt mit einer Genauigkeit von 2 (Dezimalstellen).

Edited für Klarheit

+4

es auch als DECIMAL erklärt werden kann (10, 2). – jrcs3

+0

@ jrcs3 - Guter Fang. – AAA

+9

Das ist aus verschiedenen Gründen falsch. Es ist keine Nummer, es ist numerisch oder dezimal. Sie sagen, dass numerisch (10,2) 10 Stellen vor dem Komma erlaubt, was auch falsch ist. numerisch (10,2) erlaubt 10 Ziffern mit 2 Nachkommastellen. Range = -99999999.99 bis 99999999.99 –

54

Verwenden Str() Funktion. Es dauert drei Argumente (die Zahl ist, die Zahl Gesamt Zeichen anzuzeigen, und die Anzahl der Dezimalstellen

Select Str(12345.6789, 12, 3) 

Displays angezeigt werden: ‚12345,679‘ (3 Räume, 5 Ziffern 12345, einen Dezimalpunkt und drei dezimale Ziffern (679) - Es wird abgerundet, wenn es abgeschnitten werden muss (sofern der Integer nicht zu groß für die Gesamtgröße ist. In diesem Fall werden stattdessen Sternchen angezeigt.)

für insgesamt 12 Zeichen mit 3 bis das Recht auf Dezimalpunkt

+1

'es rundet, wenn es abgeschnitten werden muss ... ... es sei denn, der ganzzahlige Teil ist zu groß für die Summe Größe, in diesem Fall werden stattdessen Sternchen angezeigt. Dies wird in der [Dokumentation für STR] (http://msdn.microsoft.com/en-us/library/ms189527.aspx) erwähnt. Hier ist ein Zitat von dieser Seite: 'STR (1223,2) schneidet die Ergebnismenge auf **.' –

158

versuchen Sie dies

SELECT CONVERT(DECIMAL(10,2),YOURCOLUMN) 
10

Diese Arbeit für mich und hält immer zwei Ziffern Fraktionen

23,1 ==> 23,10

25,569 ==> 25,56

1 ==> 1,00

Cast(CONVERT(DECIMAL(10,2),Value1) as nvarchar) AS Value2 

Code screenshot

+2

versuchen Sie die Funktion STR() von Charles Bretana oben. Es funktioniert wie Ihre Formel, wird aber Ihr 25.569-Beispiel runden. – JerryOL

+0

Hallo hier, ich habe eine Abfrage wie diese "SELECT Gametype, GameSubType, Noofplayers, Playerrank, Startzeit, Endzeit, CONVERT (Dezimal (20,10), InitialBuy), Smallblind, Bigblind, Winamt ,, Lossamt, Pokerraum, Raumname, Datum, sessiontype, sessionid FROM 'pokerastic_session' WHERE sessiontype = 1 und dateval BETWEEN '2013-05-01' und '2013-06-05'" aber durch den Fehler könntest du mir bitte helfen, Dezimal mit zwei Ziffern zu konvertieren – dineshprasanna

0

Dies ermöglicht insgesamt 10 Ziffern mit 2 Nachkommastellen. Es bedeutet, dass es den Wert vor dem Dezimalstellen bis zu 8 Ziffern und 2 nach der Dezimalstelle aufnehmen kann.

Geben Sie zur Überprüfung den Wert in die folgende Abfrage ein.

DECLARE vtest number(10,2); 
BEGIN 
SELECT 10.008 INTO vtest FROM dual; 
dbms_output.put_line(vtest); 
END; 
+1

Das wird funktionieren auf Oracle, aber nicht auf Microsoft SQL Server. –

0

Multiplizieren Sie den Wert, den Sie einfügen möchten (ex 2.99.) Von 100

Dann 100 des Ergebnisses der Division einfügen .01 bis zum Ende hinzufügen:

299.01/100 
2

Wenn Sie ist fein mit Rundung die Zahl, anstatt es zu Verkürzen, es ist dann nur:

ROUND(column_name,decimals) 
4

Wenn Sie nur zwei Dezimalstellen benötigen, ist der einfachste Weg.

SELECT CAST(12 AS DECIMAL(16,2)) 

ODER

SELECT CAST('12' AS DECIMAL(16,2)) 

Ausgabe

12.00 
0

Try this:

declare @MyFloatVal float; 

    set @MyFloatVal=(select convert(decimal(10, 2), 10.254000)) 

    select @MyFloatVal 

    Convert(decimal(18,2),r.AdditionAmount) as AdditionAmount 
-1

Dies ist, wie die Kinder es heute tun:

DECLARE- @Test DECIMAL (18,6) = 123,456789

SELECT FORMAT (@Test '##. ##') 123,46

Verwandte Themen