Avrundningsproblem i decimala siffror i SQL

Författare: Roger Morrison
Skapelsedatum: 1 September 2021
Uppdatera Datum: 10 Maj 2024
Anonim
Databasteknik, relationsdatabaser och SQL (med Mikael)
Video: Databasteknik, relationsdatabaser och SQL (med Mikael)

Innehåll

SQL-språket rundar automatiskt numrerar om tabellkolumnen där du sparar tillåter endast en viss precision av decimaler. Du kan arbeta med precisionsproblem med hjälp av SQL-rundan-funktionen. Med den här funktionen kan du styra hur SQL lagrar de numeriska värdena i databas tabellerna.


Lär dig hur man runda tal i SQL (Hemera Technologies / AbleStock.com / Getty Images)

problem

Du kommer att märka SQL-rundingsproblemet när du tittar på data i tabellerna. Det numeriska värdet som visas är inte detsamma som det du sparade genom kommandot "insert". Datatyperna i SQL-kolumnerna gör att du kan ange precisionen för decimalpunkten. Om du bara vill ha två decimaler och försök att spara ett nummer med tre, kommer SQL att runda värdet.

Tabellstruktur

Du kan ändra datatypen för en kolumn med hjälp av en SQL-tabellredigerare. Du kan redigera dina tabeller i Microsoft SQL Server Management Studio, som levereras med SQL Server. Högerklicka på bordet och välj "Ändra". Välj precisionen i listan med kolumndatatyp för att öka antalet decimaler och korrigera avrundningsproblemet.


Rund Funktion

Om du inte vill ändra tabellens datatyp, använd avrundningsfunktionen för att ändra det numeriska lagringsbeteendet. Runda upp, ner eller låt funktionen utföra standard avrundning av decimala värden. Till exempel följer följande kod upp:

rund (kolumn, 2, -1)

Denna funktion runda med två decimaler, alltid uppåt. Om du tar bort parametern "-1" får SQL att utföra standardrundan, dvs om värdet är större än eller lika med "5" och ner om värdet är lägre.

överväganden

När du ändrar avrundningsbeteendet i SQL måste du också kolla vilken kolumn som helst som har en mängd avrundade nummer. Denna kolumn har ett felaktigt värde, så du måste räkna om summan för att korrigera eventuella fel.