Forskjellen mellom tall Desimaler i SQL

Forskjellen mellom tall Desimaler i SQL


Data som er lagret i Oracle-databaser kan se ganske like ut, men være ganske ulikt, basert på definerte type objektet. En type er tildelt hver konstant, variabel eller parameter i databasen. En kan lagres som en rekke skalar nummertyper avhengig av design og tiltenkt bruk av databasen.

Antall Subtyper

I SQL, er et tall en datatype som kan tildeles data, og er definert som enten en eksakt eller omtrentlig verdi. Ulike antall data subtyper er gjensidig sammenlignbare. Antallet data subtype tildelt bestemmer presisjonen av dataene.

TALL vs. desimalformat

Ifølge SQL-92 Standard, må DECIMAL være akkurat så presis som erklærte, mens NUMERIC må være minst like presis som deklarert. I praksis ingen materielle forskjell vanligvis eksisterer mellom de numeriske og desimaltall subtyper. Alle store kommersielle database pakker - inkludert MySQL, Transact-SQL og Oracle - behandle tall- og DECIMAL som synonymer.

Skala og Precision

Begge TALL og desimaltall undergrupper styres av variabler presisjon og skala. Det riktige formatet for enten datatype er numerisk (presisjon, skala) eller DECIMAL (presisjon, skala). Precision refererer til det tillatte antall signifikante sifre i data, og kan nå maksimalt 38 sifre. Dette er standard hvis presisjon er ikke spesifisert. Scale bestemmer avrunding punktet. Skala kan variere fra -84 til 127. Positive tall påvirker avrunding til høyre for desimaltegnet, mens negative tall påvirker avrunding til venstre for desimaltegnet. For eksempel vil en skala fra tre runder til nærmeste tusendel (9,8765 blir 9,877). Zero runder av til nærmeste hele tall, og er standard hvis skalaen ikke er angitt.

Andre Tall Subtyper

Antallet subtyper dobbel presisjon og flyte kan brukes til å erklære flyttall med maksimal presisjon på 38 desimaler. Den subtype REAL kan brukes til å erklære flyttall med maksimal presisjon på 18 desimaler. Den undertype INTEGER kan brukes til å erklære heltall med en maksimal presisjon på 38 desimaler.