Qual è il numero massimo di caratteri che nvarchar (MAX) può contenere?


102

Sono nuovo al concetto nvarchar(MAX). Quanti personaggi terrà?

Risposte:


155

Max. la capacità è di 2 gigabyte di spazio, quindi stai guardando poco più di 1 miliardo di caratteri a 2 byte che si inseriscono in un NVARCHAR(MAX)campo.

Utilizzando i numeri più dettagliati dell'altra risposta, dovresti essere in grado di memorizzare

(2 ^ 31 - 1 - 2) / 2 = 1'073'741'822 double-byte characters

1 billion, 73 million, 741 thousand and 822 characters to be precise

nella tua NVARCHAR(MAX)colonna (sfortunatamente, l'ultimo mezzo carattere è sprecato ...)

Aggiornamento: come ha sottolineato @MartinMulder: qualsiasi colonna di caratteri di lunghezza variabile ha anche un overhead di 2 byte per la memorizzazione della lunghezza effettiva - quindi dovevo sottrarre altri due byte dalla 2 ^ 31 - 1lunghezza che avevo stabilito in precedenza - quindi puoi memorizzare 1 carattere Unicode in meno di Avevo affermato prima.


1
Wow ... quindi immagino di non aver bisogno di preoccuparmi di impostare una regola di convalida della dimensione massima allora. Farei meglio a stare attento a quando uso il nvarchar (MAX) però.
quakkels

20
@quakkels: a meno che tu non abbia intenzione di superare Tolstoi 'War and Peace (circa 3,1 milioni di caratteri) quasi 350 volte - no, non dovrai preoccuparti della capacità :-) E poiché è un tipo VARCHAR / NVARCHAR, lo farà usa sempre e solo lo spazio necessario - nessuna preoccupazione per lo spazio sprecato o inutilmente riservato ...
marc_s

2
veramente? Questo è figo. Solo per curiosità, in quale caso non vorresti usare nvarchar (MAX)?
quakkels

5
@quakkels: usa VARCHAR(MAX), se non hai bisogno del supporto a 2 byte per le lingue asiatiche, arabe o cirilliche. Usa (N)VARCHAR(x)se sai che una stringa non sarà mai più lunga di x caratteri (non usare NVARCHAR(MAX)per un nome - usa NVARCHAR(50)o qualunque cosa abbia senso per te)
marc_s

1
Ho appena iniziato la mia mattinata facendomi la stessa domanda ed entrambe le tue risposte hanno evocato un grande sorriso sul mio viso. +1.
Matthis Kohli

11

Da char e varchar (Transact-SQL)

varchar [(n | max)]

Dati carattere a lunghezza variabile, non Unicode. n può essere un valore compreso tra 1 e 8.000. max indica che la dimensione di archiviazione massima è 2 ^ 31-1 byte. La dimensione di archiviazione è la lunghezza effettiva dei dati immessi + 2 byte. I dati inseriti possono avere una lunghezza di 0 caratteri. I sinonimi ISO per varchar sono caratteri variabili o caratteri variabili.


4

2 ^ 31-1 byte. Quindi, un po 'meno di 2 ^ 31-1 caratteri per varchar (max) e metà di quello per nvarchar (max).

nchar e nvarchar

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.