Afrundingsproblemer i decimale tal i SQL

Forfatter: John Pratt
Oprettelsesdato: 10 Januar 2021
Opdateringsdato: 14 Kan 2024
Anonim
MS Access - Data Type - Number - Decimal - Scale
Video.: MS Access - Data Type - Number - Decimal - Scale

Indhold

SQL-sproget rundser automatisk numre, hvis tabelkolonnen, som du vil gemme, kun tillader en vis præcision af decimaler. Du kan arbejde med præcisionsproblemer ved hjælp af SQL "runde" funktionen. Denne funktion giver dig mulighed for at styre, hvordan SQL lagrer de numeriske værdier i databasetabellerne.


Lær, hvordan du runder tal i SQL (Hemera Technologies / AbleStock.com / Getty Images)

problem

Du vil bemærke SQL-afrundingsproblemet, når du kigger på dataene i tabellerne. Den viste numeriske værdi er ikke den samme som den, du gemte via kommandoen "insert". Datatyperne i SQL-kolonnerne giver dig mulighed for at indstille præcisionen for decimaltegnet. Hvis du kun vil have to decimaler og forsøge at gemme et tal med tre, vil SQL afvige værdien.

Tabelstruktur

Du kan ændre datatypen for en kolonne ved hjælp af en SQL-tabel editor. Du kan redigere dine tabeller i Microsoft SQL Server Management Studio, som leveres med SQL Server. Højreklik på bordet og vælg "Modify". Vælg præcisionen i kolonnen datatype listen for at øge antallet af decimaler og rette afrundingsproblemet.


Rund Funktion

Hvis du ikke vil ændre bordets datatype, skal du bruge afrundingsfunktionen til at ændre den numeriske lagringsadfærd. Runde op, ned eller lad funktionen udføre standard afrunding af decimaltalværdier. For eksempel er følgende kode runder op:

runde (kolonne, 2, -1)

Denne funktion runder med to decimaler, altid opad. Fjernelse af parameteren "-1" får SQL til at udføre standardrundingen, dvs. hvis værdien er større end eller lig med "5" og ned, hvis værdien er lavere.

overvejelser

Når du ændrer afrundingsadfærd i SQL, skal du også tjekke en kolonne med en sum af afrundede tal. Denne kolonne vil have en forkert værdi, så du skal genberegne summen for at rette eventuelle fejl.