2016-10-19 3 views
-3

Ich will die Nummer so zu formatieren:Format Anzahl n SQL

Von 65803.12345-65803.12.

Von 65803.98500 bis 65803.98.

+1

Verwenden Sie 'CAST (Num AS DECIMAL (18,2))' –

+3

Möchten Sie runden oder abschneiden? Fügen Sie Ihren Beispieldaten 65803.12666 hinzu! – jarlh

+2

Denken Sie auch daran, dies stattdessen in der Frontend-Anwendung zu tun. – Thilo

Antwort

1

Wenn Sie nur zwei Nachkommastellen ohne Decke oder Boden erhalten möchten.

DECLARE @i AS float 
DECLARE @TmpInt AS INT 
DECLARE @TmpDec AS FLOAT 

SELECT @i = 65803.12345 
SELECT @TmpInt = (SELECT CAST(@i AS INT)) 
SELECT @TmpDec = @i - @TmpInt 
SELECT CAST(((CAST(@TmpInt AS VARCHAR(50)) + SUBSTRING((LEFT((CAST(@TmpDec AS VARCHAR(50))), 4)), 2, 3))) AS DECIMAL(10, 2)) 
-- Output : 65803.12 

SELECT @i = 65803.98500 
SELECT @TmpInt = (SELECT CAST(@i AS INT)) 
SELECT @TmpDec = @i - @TmpInt 
SELECT CAST(((CAST(@TmpInt AS VARCHAR(50)) + SUBSTRING((LEFT((CAST(@TmpDec AS VARCHAR(50))), 4)), 2, 3))) AS DECIMAL(10, 2)) 
-- Output : 65803.98 

SELECT @i = 65803.12666 
SELECT @TmpInt = (SELECT CAST(@i AS INT)) 
SELECT @TmpDec = @i - @TmpInt 
SELECT CAST(((CAST(@TmpInt AS VARCHAR(50)) + SUBSTRING((LEFT((CAST(@TmpDec AS VARCHAR(50))), 4)), 2, 3))) AS DECIMAL(10, 2)) 
-- Output : 65803.12 
0

Versuchen Sie, diese

declare @s decimal(12,5) 
set @s = 65803.98500 
select cast(@[email protected]%1+cast(@s%1*100 as int)*0.01 as decimal(12,2)) 

Ergebnis ist

65803.98