webForumDet fria alternativet
Logga in / Bli medlem

Decimaler vid division

Databaser & SQL

6 svar · 329 visningar · startad av Moppan

Medlem sedan okt. 200257 inlägg
Trådstart#1

Hallå!

Hur kan jag få ett decimaltal som resultat av en division som jag gör i en Stored Procedure? Som jag förstår så blir resultatet en integer.

Såhär står det i hjälpen:
"If an integer dividend is divided by an integer divisor, the result is an integer that has any fractional part of the result truncated".

Hur gör jag för att få en decimal?

IF @Hours > 0
BEGIN
SET @Total = @Hours* 100/@Hours2
END

//Mia

Medlem sedan juni 200032 967 inlägg
#2

Prova att deklarera variablerna som Float istället.

Mvh,

Medlem sedan okt. 200257 inlägg
#3

Det är / som returnerar en integer. Jag undrar om det finns någon annan "divisions operator" att använda i SQL?

Medlem sedan okt. 200257 inlägg
#4

Hjälper såvida inte med Float

Medlem sedan dec. 200012 464 inlägg
#5
declare @total decimal(10,2)
if  @hours > 0 
SET @Total = cast(@Hours as dec(10,2))* 100.0/cast(@Hours2  as dec(10,2))
Medlem sedan okt. 200257 inlägg
#6

SET @Total = cast(@Hours as dec(10,2))* 100.0/cast(@Hours2 as dec(10,2)) fungerar ej!

85/174 = 48% Vill ha 48.9%

Medlem sedan dec. 200012 464 inlägg
#7

Sträänge.

Det är de ingående datatyperna som avgör vilken datatyp det blir vid division.

declare @total decimal(10,2)
if  @hours > 0 
SET @Total = round(cast(@Hours*100.0 as dec(10,2))/cast(@Hours2  as dec(10,2)),1

Så då?

255 ms totalt · 4 externa anrop · v20260731065814-full.c32e866c
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)