Questo articolo contiene un riferimento rapido ai tipi di dati forniti dal sistema disponibili in SQL Server 2017, insieme ad alcune informazioni di base come la lunghezza massima in byte, la precisione, la scala e se il tipo di dati è nullable o meno (1
significa che è nullable, 0
significa che non è nullable).
Numeri esatti
Nome | Lunghezza massima | Precisione | Scala | Nullable? |
---|---|---|---|---|
bigint | 8 | 19 | 0 | 1 |
bit | 1 | 1 | 0 | 1 |
decimale | 17 | 38 | 38 | 1 |
int | 4 | 10 | 0 | 1 |
soldi | 8 | 19 | 4 | 1 |
numerico | 17 | 38 | 38 | 1 |
smallint | 2 | 5 | 0 | 1 |
piccoli soldi | 4 | 10 | 4 | 1 |
tinyint | 1 | 3 | 0 | 1 |
Numeri approssimativi
Nome | Lunghezza massima | Precisione | Scala | Nullable? |
---|---|---|---|---|
galleggiante | 8 | 53 | 0 | 1 |
reale | 4 | 24 | 0 | 1 |
Data e ora
Nome | Lunghezza massima | Precisione | Scala | Nullable? |
---|---|---|---|---|
data | 3 | 10 | 0 | 1 |
dataora2 | 8 | 27 | 7 | 1 |
dataora | 8 | 23 | 3 | 1 |
datatimeoffset | 10 | 34 | 7 | 1 |
smalldatetime | 4 | 16 | 0 | 1 |
tempo | 5 | 16 | 7 | 1 |
Stringhe di caratteri
Nome | Lunghezza massima | Precisione | Scala | Nullable? |
---|---|---|---|---|
carattere | 8000 | 0 | 0 | 1 |
testo | 16 | 0 | 0 | 1 |
varchar | 8000 | 0 | 0 | 1 |
Stringhe di caratteri Unicode
Nome | Lunghezza massima | Precisione | Scala | Nullable? |
---|---|---|---|---|
nchar | 8000 | 0 | 0 | 1 |
ntext | 16 | 0 | 0 | 1 |
nvarchar | 8000 | 0 | 0 | 1 |
Stringhe binarie
Nome | Lunghezza massima | Precisione | Scala | Nullable? |
---|---|---|---|---|
binario | 8000 | 0 | 0 | 1 |
immagine | 16 | 0 | 0 | 1 |
variabile | 8000 | 0 | 0 | 1 |
Altri tipi di dati
Nome | Lunghezza massima | Precisione | Scala | Nullable? |
---|---|---|---|---|
ID gerarchico | 892 | 0 | 0 | 1 |
variante_sql | 8016 | 0 | 0 | 1 |
geometria | -1 | 0 | 0 | 1 |
geografia | -1 | 0 | 0 | 1 |
indicatore orario* | 8 | 0 | 0 | 0 |
identificatore univoco | 16 | 0 | 0 | 1 |
xml | -1 | 0 | 0 | 1 |
nomesistema | 256 | 0 | 0 | 0 |
* Il indicatore orario tipo di dati è sinonimo di rowversion tipo di dati. Vedi sotto per maggiori informazioni.
I tipi "cursore", "tabella" e "versione riga"
Ho recuperato le informazioni nelle tabelle precedenti tramite sys.types
vista del catalogo di sistema. Oltre ai tipi di cui sopra, la documentazione di Microsoft sui tipi di dati elenca anche il cursore e tabella tipi, nonché rowversion invece di timestamp .
Il tipo "timestamp"
Microsoft consiglia che il timestamp la sintassi è deprecata. È consigliabile utilizzare ora rowversion invece di timestamp ove possibile nelle nostre dichiarazioni DDL.
Tuttavia, nel frattempo, potresti scoprire che le colonne sembrano ancora essere definite come timestamp anche quando specifichi esplicitamente rowversion durante la creazione (usando Transact-SQL). Tuttavia, Microsoft consiglia che questa è la sintassi corretta da utilizzare in futuro.
Tieni inoltre presente che timestamp in T-SQL/SQL Server è diverso dal timestamp tipo di dati definito nella norma ISO.
Sembra che il motivo per cui è stato deprecato sia dovuto alla confusione causata dal suo nome. Microsoft lo ha riconosciuto nel 2007 e ha consigliato che avrebbe cercato di affrontarlo in modo compatibile con le versioni precedenti.
Controlla il tuo database
Puoi recuperare le informazioni sul tipo di dati per i tuoi database utilizzando sys.types
vista del sistema. Vedere Come restituire un elenco di tipi di dati in SQL Server per una spiegazione e degli esempi. L'esecuzione di questa visualizzazione restituisce anche qualsiasi alias e tipi definiti dall'utente presenti nel database.