SQL Server: Perbedaan Varchar dan NVarchar

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 MSSQL14.SQLEXPRESS jadi 40 dengan ukutan 40.

Ini tergantung pada versi SQL Server yang dipakai pada sebagian akan dianggap 30 dengan ukuran panjang 60. Tapi saya yang menggunakan MSSQL14.SQLEXPRESS jadi 40 dengan ukuran 80.

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:



Post a Comment

0 Comments