sql >> Databasteknik >  >> RDS >> Sqlserver

Lista över datatyper i SQL Server 2017

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.


  1. Data från oracle i utf-8 med php

  2. Komma igång med SQLite Full-text Search

  3. Hur uppdaterar man en stor tabell med miljontals rader i SQL Server?

  4. Hur man använder Failover-mekanismen för MaxScale