Kedua-duanya adalah jenis data dalam banyak bahasa pengaturcaraan dan sistem pangkalan data di mana 'char' merujuk kepada watak dan 'varchar' merujuk kepada watak berubah-ubah. Char in C mewakili jenis watak yang digunakan untuk menyimpan nilai-nilai rentetan, kebanyakannya kod-kod yang dikodkan UTF-8 dan bilangan bulat. Varchar, sebaliknya, adalah jenis data yang boleh mengandungi data dari sebarang jenis panjang tak tentu. Varchar merujuk kepada jenis data medan dalam sistem pengurusan pangkalan data. Walaupun mereka berdua boleh menyimpan nilai rentetan sehingga maksimum 8,000 aksara, char memerlukan lebih banyak penyimpanan daripada varchar. Secara teknikalnya, kedua-duanya digunakan untuk menyimpan jenis data yang sama tetapi mereka berbeza dengan cara mereka disimpan dan diambil. Mari kita perhatikan perbezaan mereka secara terperinci.
Char ialah jenis data tetap panjang yang digunakan untuk menyimpan aksara non-Unicode, oleh itu nama (pendek untuk aksara). Ia menduduki satu byte ruang untuk setiap watak yang dikodkan sebagai nombor - yang dari pengekodan ASCII. Jenis char juga boleh digunakan untuk mengisytiharkan bilangan bulat kecil. Untuk mengisytiharkan pemboleh ubah watak, kata kunci 'char' digunakan, yang bermaksud satu huruf tunggal disimpan dalam satu bait.
Seperti jenis integer, char boleh ditandatangani atau tidak ditandatangani. Ia boleh memegang nilai-nilai char yang ditandatangani dari -128 hingga 127 dan bergantung kepada saiz seni bina, ia juga boleh tidak ditandatangani, memegang nilai-nilai antara 0 hingga 255. Apabila nilai char disimpan, mereka benar-empuk dengan ruang pada panjang yang ditetapkan . Ruang belakang dibuang apabila ia diambil.
Contohnya - jika anda mengisytiharkan pembolehubah jenis data char (7), maka ia akan selalu mengambil 7 bait data tanpa mengira sama ada anda menyimpan 1 aksara atau 7 aksara, yang bermaksud anda boleh menyimpan maksimum 7 aksara dalam ruangan.
Varchar, sebagai nama yang dicadangkan, adalah jenis data panjang yang berubah-ubah yang boleh mengandungi sebarang jenis data dengan panjang berbeza dari 0 hingga 65,535. Bidang Varchar dapat menyimpan nilai dari semua ukuran hingga batas tertentu, bergantung pada pangkalan data. Ia boleh ditakrifkan sama ada dalam bahasa pengaturcaraan atau di pangkalan pangkalan data. Saiz medan varchar boleh menjadi apa-apa dari sifar hingga panjang medan panjang yang diisytiharkan.
Untuk mengisytiharkan watak berubah-ubah, kata kunci 'varchar' digunakan. Varchar mengambil ruang berubah-ubah, yang bermaksud ia hanya akan menggunakan bilangan bait yang sama dengan bilangan aksara. Ia membantu mengelakkan pembaziran ruang kerana ia hanya menggunakan ruang yang diperlukan untuk saiz rentetan. Dalam beberapa bahasa pengaturcaraan dan sistem pangkalan data, sebarang ruang tambahan dikeluarkan secara automatik dari pangkalan data.
Sebagai contoh - jika anda mengisytiharkan pembolehubah varchar (10), ia akan menggunakan bilangan bait yang sama dengan bilangan aksara. Oleh itu, jika anda menyimpan hanya satu aksara, maka ia akan mengambil hanya satu byte dan jika anda menyimpan 10 aksara, ia akan mengambil 10 bait, dengan itu mengelakkan pembaziran ruang pangkalan data.
'Char' adalah jenis data tetap panjang yang digunakan untuk menyimpan nilai rentetan nilai panjang tetap, sedangkan 'Varchar' adalah jenis data panjang variabel yang digunakan untuk menyimpan data alfanumerik panjang variabel.
Saiz storan nilai aksara bersamaan dengan saiz maksima lajur ini yang anda nyatakan semasa membuat jadual. Sebaliknya, saiz storan nilai varchar ialah panjang sebenar data yang dimasukkan, bukan saiz maksimum untuk lajur ini.
Anda boleh menggunakan char apabila penyertaan data dalam lajur dijangka menjadi saiz yang sama, sedangkan sebaliknya, varchar boleh digunakan apabila entri data dalam lajur dijangka bervariasi dalam saiz.
Char menggunakan peruntukan memori statik manakala varchar menggunakan peruntukan memori dinamik
Panjang pembolehubah char boleh mempunyai sebarang nilai dari 0 hingga 255, sementara panjang pembolehubah varchar berkisar antara 0 hingga 65,535.
Penyertaan data konsisten dalam char yang digunakan untuk menyimpan data seperti nombor telefon, sedangkan varchar digunakan untuk menyimpan data yang berbeza-beza seperti alamat.
Char | Varchar |
Digunakan untuk menyimpan nilai rentetan aksara panjang tetap. | Digunakan untuk menyimpan data alfanumerik panjang berubah. |
Panjangnya berbeza dari 0 hingga 255. | Panjangnya berbeza dari 0 hingga 65,535. |
Mengambil 1 bait setiap aksara untuk penyimpanan. | Mengambil 1 bait setiap aksara ditambah 1 atau 2 bait tambahan untuk menyimpan maklumat panjang. |
Saiz storan char sama seperti diisytiharkan. | Saiz storan varchar bergantung pada rentetan khusus yang disimpan. |
Menggunakan peruntukan memori statik. | Menggunakan peruntukan memori dinamik. |
Char harus digunakan apabila panjang pemboleh ubah diketahui. | Varchar hanya perlu digunakan apabila panjang pemboleh ubah tidak diketahui. |
Ia hanya menerima aksara. | Ia menerima kedua-dua watak dan nombor. |
Ia 50 peratus lebih cepat daripada Varchar. | Ia lebih perlahan daripada Char. |
Saiz storan nilai char bersamaan dengan saiz maksimum untuk lajur. | Saiz storan nilai varchar adalah sama dengan panjang sebenar data yang dimasukkan, bukan saiz maksimum untuk lajur. |