Jika kita lihat di daftar tipe data yang ada di SQL server diantaranya ada VARCHAR dan NVARCHAR yang biasa digunakan untuk menyimpan karakter berupa teks/string. Lalu bedanya apa sih selain adanya penambahan huruf N di depannya?
Pembeda utamanya adalah tipe data NVARCHAR bisa memuat karakter unicode seperti tulisan Arab, Korea, Jepang, dan sejenisnya. Seperti pada contoh di bawah ini.
Karena tipe data VARCHAR tidak dapat menampung unicode maka hasil pada jendela result berupa tanda tanya.
Untuk lebih detailnya perbedaan Varchar dan NVarchar dapat dilihat pada tabel di bawah.
|
VARCHAR[(n)] |
NVARCHAR[(n)] |
Definisi dasar |
variable-length character
string, untuk menyimpan karakter yang bersifat non-unicode |
uNicode variable-length
character string, untuk menyimpan karakter yang bersifat unicode tetapi bisa
juga menyimpan data non-unicode. |
Menyimpan data sebagai |
8-bits data biasa |
UTF-16 |
Jumlah Bytes yang
dibutuhkan untuk setiap karakter |
1 byte per karakter |
2 bytes per
Unicode/Non-Unicode karakter. |
Opsi range untuk
parameter n |
Nilai n bisa dari 1 -
8000. Maksimal penyimpanan 8000 karakter non-unicode. |
Nilai n bisa dari 1 -
4000. Maksimal penyimpanan 4000 karakter unicode/non-unicode. |
Jika n tidak ditentukan
saat deklarasi |
akan dianggap 1 dengan
ukuran panjang 1. |
akan dianggap 1 dengan
ukuran panjang 2. |
Jika n tidak ditentukan
saat menggunakan fungsi CAST/CONVERT |
Ini tergantung pada versi SQL Server yang dipakai pada sebagian akan dianggap 30 dengan
ukuran panjang 30. Tapi saya yang menggunakan |
Ini tergantung pada versi SQL Server yang dipakai pada sebagian akan dianggap 30 dengan ukuran panjang 60. Tapi saya yang menggunakan |
Mana yang harus digunakan |
Jika data yang disimpan
tidak mengandung unicode. |
Jika data yang disimpan
mengandung unicode. |
Ukuran Penyimpanan |
Mengambil jumlah byte
yang sama dengan jumlah Karakter yang dimasukkan ditambah dua byte ekstra
untuk menentukan offset. |
Mengambil jumlah byte
yang sama dengan dua kali lipat jumlah Karakter yang dimasukkan ditambah dua
byte ekstra untuk menentukan offset. |
Saat kita ingin memberi nilai unicode pada tipe data NVARCHAR perlu tambahan huruf N di depan kutip sati ('). Karena jika tidak unicode tidak akan terbaca.
Perbedaan ukuran VARCHAR dan NVARCHAR untuk jumlah karakter yang sama:
Perbedaan jika panjang tidak didefinisikan saat deklarasi:
Perbedaan jika panjang tidak didefinisikan saat CAST/CONVERT:
0 Comments