sql >> Database teknologi >  >> RDS >> Sqlserver

Liste over datatyper i SQL Server 2017

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.


  1. Hvordan fjerner man HTML-tags fra en streng i SQL Server?

  2. Udfordringer ved at skalere Moodle MySQL-databasen

  3. Opdeling af kommaseparerede værdier i kolonner til flere rækker i SQL Server

  4. Pivotering af en tabel i SQL (dvs. krydstabulering / krydstabulering)