Denne artikel indeholder en hurtig reference til de systemleverede datatyper, der er tilgængelige i SQL Server 2017, sammen med nogle grundlæggende oplysninger såsom maksimal længde i bytes, præcision, skalering og om datatypen er nullbar eller ej (1 betyder, at den er nullbar,
0
betyder, at den ikke kan nulstilles).
Nøjagtige tal
Navn | Maks. længde | Nøjagtighed | Skala | Nullerbar? |
---|---|---|---|---|
bigint | 8 | 19 | 0 | 1 |
bit | 1 | 1 | 0 | 1 |
decimal | 17 | 38 | 38 | 1 |
int | 4 | 10 | 0 | 1 |
penge | 8 | 19 | 4 | 1 |
numerisk | 17 | 38 | 38 | 1 |
smallint | 2 | 5 | 0 | 1 |
småpenge | 4 | 10 | 4 | 1 |
tinyint | 1 | 3 | 0 | 1 |
Omtrentlig tal
Navn | Maks. længde | Nøjagtighed | Skala | Nullerbar? |
---|---|---|---|---|
flyde | 8 | 53 | 0 | 1 |
rigtig | 4 | 24 | 0 | 1 |
Dato og tid
Navn | Maks. længde | Nøjagtighed | Skala | Nullerbar? |
---|---|---|---|---|
dato | 3 | 10 | 0 | 1 |
datetime2 | 8 | 27 | 7 | 1 |
datotid | 8 | 23 | 3 | 1 |
datetime offset | 10 | 34 | 7 | 1 |
smalldatetime | 4 | 16 | 0 | 1 |
tid | 5 | 16 | 7 | 1 |
Tegnstrenge
Navn | Maks. længde | Nøjagtighed | Skala | Nullerbar? |
---|---|---|---|---|
char | 8000 | 0 | 0 | 1 |
tekst | 16 | 0 | 0 | 1 |
varchar | 8000 | 0 | 0 | 1 |
Unicode-tegnstrenge
Navn | Maks. længde | Nøjagtighed | Skala | Nullerbar? |
---|---|---|---|---|
nchar | 8000 | 0 | 0 | 1 |
ntekst | 16 | 0 | 0 | 1 |
nvarchar | 8000 | 0 | 0 | 1 |
Binære strenge
Navn | Maks. længde | Nøjagtighed | Skala | Nullerbar? |
---|---|---|---|---|
binær | 8000 | 0 | 0 | 1 |
billede | 16 | 0 | 0 | 1 |
varbinær | 8000 | 0 | 0 | 1 |
Andre datatyper
Navn | Maks. længde | Nøjagtighed | Skala | Nullerbar? |
---|---|---|---|---|
hierarchyid | 892 | 0 | 0 | 1 |
sql_variant | 8016 | 0 | 0 | 1 |
geometri | -1 | 0 | 0 | 1 |
geografi | -1 | 0 | 0 | 1 |
tidsstempel* | 8 | 0 | 0 | 0 |
uniqueidentifier | 16 | 0 | 0 | 1 |
xml | -1 | 0 | 0 | 1 |
sysname | 256 | 0 | 0 | 0 |
* tidsstemplet datatypen er et synonym for rækkeversionen datatype. Se nedenfor for mere information.
Typerne 'cursor', 'tabel' og 'rowversion'
Jeg hentede oplysningerne i ovenstående tabeller via sys.types
systemkatalogvisning. Ud over ovenstående typer viser Microsofts dokumentation om datatyper også markøren og tabel typer, samt rowversion i stedet for tidsstempel .
Tidsstempeltypen
Microsoft anbefaler, at tidsstemplet syntaks er forældet. Det anbefales, at vi nu bruger rowversion i stedet for tidsstempel hvor det er muligt i vores DDL-erklæringer.
Men i mellemtiden kan du finde ud af, at kolonner stadig ser ud til at være defineret som tidsstempel selv når du udtrykkeligt angiver rowversion når du opretter dem (ved hjælp af Transact-SQL). Ikke desto mindre anbefaler Microsoft, at dette er den korrekte syntaks at bruge fremover.
Bemærk også det tidsstempel i T-SQL/SQL Server er forskellig fra tidsstemplet datatype defineret i ISO-standarden.
Det ser ud til, at grunden til, at den blev forældet, skyldes den forvirring, dens navn forårsagede. Microsoft erkendte dette i 2007 og oplyste, at de ville forsøge at løse det på en bagudkompatibel måde i fremtidige udgivelser.
Tjek din egen database
Du kan hente datatypeoplysninger til dine egne databaser ved at bruge sys.types
systemvisning. Se Sådan returneres en liste over datatyper i SQL Server for en forklaring og eksempler. Kørsel af denne visning returnerer også alle alias og brugerdefinerede typer, der er i databasen.