SQL har tre funktioner som kan avrunda värden till ett visst antal decimaler . Du kan använda dessa funktioner för att lösa en mängd olika databas - relaterade problem , från att bli av fraktioner av pennies på finansiella transaktioner för att reglera utdata från flera vetenskapliga instrument . Om du är ny till SQL , kan dess avrundning funktioner verkar lite konstigt , och kan orsaka några anpassningsproblem . Konventionell Avrundning
SQL : s " ROUND ( ) "-funktion tar ett befintligt värde och rundar den till det angivna antalet decimaler . Formatet är följande :
AVRUNDA ( [ värde ], [ n] , [ 1 ] ) ) katalog
Här anger " [value ] " är ett decimalvärde , och " [ n ] " är antalet siffror värdet ska avrundas till . Konventionella Avrundar värden på 0,5 eller högre upp , och värden på 0,49 och lägre ner . Inställning av värdet till "0 " rundor till heltalsvärden , sätta värdet till " -1 " rundor till närmaste multipel av 10 . Den " ROUND ( ) " -funktion tredje parametern , " [ 1 ] , " trunkerar tal till det angivna antalet decimaler om det satt någon annat värde än noll . En viktig källa till oväntade avrundningsproblem kommer då , på grund av ett skrivfel , är den tredje parametern inställd och antalet kortar stället rundor . Addera golv och tak
SQL använder " FLOOR ( ) "-funktion för att tvinga värden att avrunda nedåt till närmaste värde , och "taket ( ) "-funktion att runda upp till närmaste värde. Båda dessa funktioner returnerar heltalsvärden , även med hjälp av en flottör datatyp med ett antal decimaler specificerade ställen returnerar ett värde med nollor efter decimalen
Rekommenderade datatyper
< . br >
troligaste orsaken till avrundningsfel i SQL härrör från att använda en oväntad datatyp för numeriska uttryck i " ROUND ( ) " -funktion , eller från att använda "golvet ( ) " eller " tak ( ) " och förväntar sig att få en decimal datatyp , snarare än ett heltal. Om din SQL-funktionen ger dig oväntade avrundning resultat , se till att " CAST ( ) " -funktion som är att ange numret har datatypen inställd på " heltal , " " decimal ", "pengar " eller " smallmoney . " är " decimal " datatyp begränsad till endast 38 siffror totalt, vilket är en begränsning som få människor utanför forskarsamhället stöter .
andra datatyper
Två datatyper returnera numeriska värden som kan orsaka problem med " ROUND ( ) " -funktion . Dessa är " riktiga " och "flyta" Taltyperna i SQL , som används för att spela in mycket små fraktioner som blir rundade upp av de flesta sorter av SQL i sista decimalen i datatypen anges, vissa SQL implementationer runda till noll , avrunda nedåt eller runda konventionellt . När du har data som matas in i en SQL-databas som kan använda " riktiga " eller " float " datatyper , använd " CAST ( ) " eller "Konvertera ( ) " -funktioner för att konvertera dem till " decimal " datatyp .