Avrundingsproblemer i decimale sifre i SQL

Forfatter: John Pratt
Opprettelsesdato: 12 Januar 2021
Oppdater Dato: 22 November 2024
Anonim
REGEX (REGULAR EXPRESSIONS) WITH EXAMPLES IN DETAIL | Regex Tutorial
Video: REGEX (REGULAR EXPRESSIONS) WITH EXAMPLES IN DETAIL | Regex Tutorial

Innhold

SQL-språket runder automatisk tall hvis tabellkolonnen der du vil lagre, bare tillater en viss presisitet av desimaler. Du kan jobbe med presisjonsproblemer ved hjelp av SQL-runden-funksjonen. Denne funksjonen lar deg kontrollere hvordan SQL lagrer numeriske verdier i databasetabellene.


Lær hvordan du kan runde tall i SQL (Hemera Technologies / AbleStock.com / Getty Images)

problem

Du vil legge merke til SQL-rundingsproblemet når du ser på dataene i tabellene. Den numeriske verdien som vises, er ikke den samme som den du lagret via "insert" -kommandoen. Datatypene i SQL-kolonnene lar deg angi presisjonen av desimaltegnet. Hvis du bare vil ha to desimaler og prøver å lagre et tall med tre, vil SQL rundt verdien.

Tabellstruktur

Du kan endre datatypen til en kolonne ved hjelp av en SQL-tabellredigerer. Du kan redigere tabellene dine i Microsoft SQL Server Management Studio, som følger med SQL Server. Høyreklikk på bordet og velg "Endre". Velg presisjonen i kolonnen datatype listen for å øke antall desimaler og korrigere avrundingsproblemet.


Rund Funksjon

Hvis du ikke vil endre tabellens datatype, bruk avrundingsfunksjonen for å endre den numeriske lagringsadferansen. Rund opp, ned eller la funksjonen utføre standard avrunding av desimalverdier. For eksempel, kjører følgende kode opp:

runde (kolonne, 2, -1)

Denne funksjonen runder med to desimaler, alltid oppover. Hvis du fjerner parameteren "-1", får SQL til å utføre standardrundingen, dvs. opp hvis verdien er større enn eller lik "5" og ned hvis verdien er lavere.

betraktninger

Når du endrer avrundingsadferd i SQL, må du også kontrollere hvilken som helst kolonne som har summen av avrundede tall. Denne kolonnen vil ha en feil verdi, så du må beregne summen for å korrigere eventuelle feil.