text
dan ntext
sudah usang, jadi mari kita hilangkan sejenak. Untuk apa yang tersisa, ada 3 dimensi:
- Unicode (UCS-2) vs. non-unicode:
N
di depan namanya menunjukkan Unicode - Panjang tetap vs. panjang variabel:
var
menunjukkan variabel, jika tidak tetap - Sebaris vs. BLOB:
(max)
sebagai panjang menunjukkan BLOB, jika tidak adalah nilai dalam-baris
Jadi dengan ini, Anda dapat membaca arti jenis apa pun:
CHAR(10)
:adalah panjang tetap dalam baris non-Unicode ukuran 10NVARCHAR(256)
:adalah panjang variabel dalam baris Unicode dengan ukuran hingga 256VARCHAR(MAX)
:adalah panjang variabel BLOB non-Unicode
Jenis text
yang tidak digunakan lagi dan ntext
sesuai dengan tipe baru varchar(max)
dan nvarchar(max)
masing-masing.
Ketika Anda pergi ke detail, arti dari in-row
vs. BLOB
kabur untuk waktu yang kecil karena mesin mungkin optimalkan penyimpanan dan tarik BLOB in-row atau dorong nilai in-row ke dalam unit alokasi 'small BLOB', tetapi ini hanyalah detail implementasi. Lihat Organisasi Tabel dan Indeks
.
Dari sudut pandang pemrograman, semua jenis:CHAR
, VARCHAR
, NCHAR
, NVARCHAR
, VARCHAR(MAX)
dan NVARCHAR(MAX)
, mendukung API string seragam:Fungsi String
. Yang lama, tidak digunakan lagi, mengetik TEXT
dan NTEXT
jangan jangan mendukung API ini, mereka memiliki API TEXT terpisah, usang, untuk dimanipulasi. Anda tidak boleh menggunakan tipe yang sudah usang.
Jenis BLOB mendukung pembaruan di tempat yang efisien dengan menggunakan kolom UPDATE table SET column.WRITE(@value, @offset)
sintaks.
Perbedaan antara tipe panjang tetap dan panjang variabel hilang saat kompresi baris pada tabel. Dengan mengaktifkan kompresi baris, jenis panjang tetap dan panjang variabel disimpan dalam format yang sama dan spasi tambahan tidak disimpan di disk, lihat Implementasi Kompresi Baris . Perhatikan bahwa kompresi halaman menyiratkan kompresi baris.