Vorrei sapere qual è la dimensione massima di varchar
in SQL Server 2000. Mentre cercavo su Google da qualche parte, sono stati scritti 8000 caratteri e da qualche parte sono stati scritti 8060 byte. Quale è corretto?Dimensioni massime di varchar (max) in SQL Server 2000
risposta
Per quanto mi ricordo sono 8000 caratteri.
Per Nvarchar è 4000.
Varchar è 8000 ed è nvarchar 4000.
Ecco il riferimento varchar MSDN:
http://msdn.microsoft.com/en-us/library/aa258242(SQL.80).aspx
È 8000 caratteri = 8000 byte in sqL ???? – Kumar
@Kumar: sì, per VARCHAR, 1 carattere = 1 byte; per NVARCHAR, 1 carattere = 2 byte –
È un po 'più complicato di così. La versione breve è che varchar e nvarchar non usano lo spazio finché non si mettono effettivamente i dati lì. –
La dimensione massima di varchar (max) è di grandi dimensioni (2 GB o 2 Gcar, penso). Il valore massimo che è possibile specificare per n in varchar (n) è 8000 e per nvarchar è 4000.
Nessun varchar (max) in SQL 2000 – MartW
Hai ragione, ma la domanda è nullo. La seconda parte della mia risposta contiene ancora – erikkallen
Una pagina dati di SQL Server ha 8k: 8192 byte. Da questo una parte è riservata per l'intestazione della pagina, lasciando 8060 byte il lnegth massimo che una singola riga può avere. In una riga, i tipi varbinary (n), varchar (n) e nvarchar (n) non possono superare 8000 byte, il che significa che varchar (8000) è la lunghezza massima di Ascii e nvarchar (4000) è la lunghezza massima Unicode (da Unicode memorizza ogni carattere su 2 byte).
La migliore spiegazione di tutti questi dettagli proviene da Inside the Storage Engine: Anatomy of a page.
+1 Piccolo bocconcino: Unicode non memorizza ogni carattere in 2 byte. Questo dipende dalla codifica. UTF-8 e UTF-16 sono codifiche di lunghezza variabile, UTF-32 è l'unica dimensione fissa che io conosca. Esistono altre codifiche (UCS-2, UTF-7). Internamente, Microsoft utilizza in genere UTF-16, in cui la dimensione predefinita di un carattere è 2 byte. Questo vale per almeno tutti i prodotti basati su .NET e per SQL Server. – Abel
@abel: SQL Server [utilizza codifica UCS-2LE] (http://msdn.microsoft.com/en-us/library/ms189617 (v = sql.105) .aspx), che è esattamente 2 byte per carattere. Sono d'accordo anche se quel 'Unicode', come scritto nel post, non ha strettamente 2 byte per carattere. –
Sì, hai ragione su UCS-2, continuo a dimenticarlo, è uno dei miei difetti principali, in quanto consente solo i caratteri BMP. Tx per averlo indicato :) – Abel
È 8000 caratteri = 8000 byte in sqL ???? – Kumar
@Kumar: ** sì! ** Per 'varchar' è 1 carattere = 1 byte, per' nvarchar' è 1 carattere = 2 byte –