Jawaban:
Max. kapasitasnya adalah 2 gigabyte ruang - jadi Anda melihat lebih dari 1 miliar karakter 2-byte yang akan muat ke dalam suatu NVARCHAR(MAX)
bidang.
Menggunakan nomor jawaban yang lebih rinci, Anda harus bisa menyimpan
(2 ^ 31 - 1 - 2) / 2 = 1'073'741'822 double-byte characters
1 billion, 73 million, 741 thousand and 822 characters to be precise
di NVARCHAR(MAX)
kolom Anda (sayangnya, karakter setengah terakhir itu terbuang ...)
Pembaruan: seperti yang ditunjukkan @MartinMulder: kolom karakter panjang variabel apa pun juga memiliki overhead 2 byte untuk menyimpan panjang sebenarnya - jadi saya perlu mengurangi dua byte lagi dari 2 ^ 31 - 1
panjang yang telah saya tetapkan sebelumnya - sehingga Anda dapat menyimpan 1 karakter Unicode kurang dari Saya telah mengklaim sebelumnya.
VARCHAR(MAX)
, jika Anda tidak memerlukan dukungan 2-byte untuk bahasa Asia, Arab atau Sirilik. Gunakan (N)VARCHAR(x)
jika Anda tahu sebuah string tidak akan lebih dari x karakter (jangan gunakan NVARCHAR(MAX)
untuk nama depan - gunakan NVARCHAR(50)
atau apa pun yang masuk akal bagi Anda)
Dari char dan varchar (Transact-SQL)
varchar [(n | max)]
Data karakter non-Unicode dengan panjang variabel. n dapat berupa nilai dari 1 hingga 8.000. max menunjukkan bahwa ukuran penyimpanan maksimum adalah 2 ^ 31-1 byte. Ukuran penyimpanan adalah panjang aktual data yang dimasukkan + 2 byte. Data yang dimasukkan bisa sepanjang 0 karakter. Sinonim ISO untuk varchar bervariasi karakter atau karakter bervariasi.
2 ^ 31-1 byte. Jadi, kurang dari 2 ^ 31-1 karakter untuk varchar (maks) dan setengahnya untuk nvarchar (maks).