Den här artikeln innehåller en snabbreferens av de systemlevererade datatyperna som är tillgängliga i SQL Server 2017, tillsammans med lite grundläggande information som maximal längd i byte, precision, skala och om datatypen är nullbar eller inte (1 betyder att den är nullbar,
0
betyder att den inte är nullbar).
Exakta siffror
Namn | Max längd | Precision | Skala | Nullbar? |
---|---|---|---|---|
bigint | 8 | 19 | 0 | 1 |
bit | 1 | 1 | 0 | 1 |
decimal | 17 | 38 | 38 | 1 |
int | 4 | 10 | 0 | 1 |
pengar | 8 | 19 | 4 | 1 |
numerisk | 17 | 38 | 38 | 1 |
smallint | 2 | 5 | 0 | 1 |
småpengar | 4 | 10 | 4 | 1 |
tinyint | 1 | 3 | 0 | 1 |
Ungefärliga siffror
Namn | Max längd | Precision | Skala | Nullbar? |
---|---|---|---|---|
flyta | 8 | 53 | 0 | 1 |
riktigt | 4 | 24 | 0 | 1 |
Datum och tid
Namn | Max längd | Precision | Skala | Nullbar? |
---|---|---|---|---|
datum | 3 | 10 | 0 | 1 |
datetime2 | 8 | 27 | 7 | 1 |
datumtid | 8 | 23 | 3 | 1 |
datetime offset | 10 | 34 | 7 | 1 |
smalldatetime | 4 | 16 | 0 | 1 |
tid | 5 | 16 | 7 | 1 |
Teckensträngar
Namn | Max längd | Precision | Skala | Nullbar? |
---|---|---|---|---|
char | 8000 | 0 | 0 | 1 |
text | 16 | 0 | 0 | 1 |
varchar | 8000 | 0 | 0 | 1 |
Unicode-teckensträngar
Namn | Max längd | Precision | Skala | Nullbar? |
---|---|---|---|---|
nchar | 8000 | 0 | 0 | 1 |
ntext | 16 | 0 | 0 | 1 |
nvarchar | 8000 | 0 | 0 | 1 |
Binära strängar
Namn | Max längd | Precision | Skala | Nullbar? |
---|---|---|---|---|
binär | 8000 | 0 | 0 | 1 |
bild | 16 | 0 | 0 | 1 |
varbinary | 8000 | 0 | 0 | 1 |
Andra datatyper
Namn | Max längd | Precision | Skala | Nullbar? |
---|---|---|---|---|
hierarchyid | 892 | 0 | 0 | 1 |
sql_variant | 8016 | 0 | 0 | 1 |
geometri | -1 | 0 | 0 | 1 |
geografi | -1 | 0 | 0 | 1 |
tidsstämpel* | 8 | 0 | 0 | 0 |
uniqueidentifier | 16 | 0 | 0 | 1 |
xml | -1 | 0 | 0 | 1 |
sysname | 256 | 0 | 0 | 0 |
* tidsstämpeln datatyp är en synonym för radversionen data typ. Se nedan för mer information.
Typerna 'markör', 'tabell' och 'radversion'
Jag hämtade informationen i ovanstående tabeller via sys.types
systemkatalogvy. Utöver ovanstående typer listar Microsofts dokumentation om datatyper också markören och tabell typer, samt rowversion istället för tidsstämpel .
Typen "tidsstämpel"
Microsoft rekommenderar att tidsstämpeln syntax är utfasad. Vi rekommenderar att vi nu använder rowversion istället för tidsstämpel när det är möjligt i våra DDL-utlåtanden.
Men under tiden kan du upptäcka att kolumner fortfarande verkar vara definierade som tidsstämpel även när du uttryckligen anger rowversion när du skapar dem (med Transact-SQL). Icke desto mindre rekommenderar Microsoft att detta är rätt syntax att använda framöver.
Observera också att tidsstämpel i T-SQL/SQL Server skiljer sig från tidsstämpeln datatyp definierad i ISO-standarden.
Det verkar som att anledningen till att den avskaffades beror på den förvirring som dess namn orsakade. Microsoft erkände detta 2007 och meddelade att de skulle försöka åtgärda det på ett bakåtkompatibelt sätt i framtida utgåvor.
Kontrollera din egen databas
Du kan hämta datatypsinformation för dina egna databaser genom att använda sys.types
systemvy. Se Hur man returnerar en lista över datatyper i SQL Server för en förklaring och exempel. Att köra den här vyn returnerar också alla alias och användardefinierade typer som finns i databasen.