Sebenarnya jenis data VARCHAR menyimpan data aksara panjang berubah dalam aksara tunggal dan berbilang bait. Sintaks untuk jenis data ini ialah VARCHAR(n), dengan n ialah bilangan maksimum aksara yang mesti dinyatakan semasa mencipta jadual. Sebelum MySQL 5.03, nilai n boleh berada dalam julat 0 hingga 255, tetapi dalam MySQL 5.03 dan kemudian, nilainya boleh berada dalam julat 0 hingga 65,535.
Bilangan maksimum aksara yang disimpan dalam VARCHAR bergantung pada saiz baris maksimum dan set aksara yang digunakan. Jika kita menggunakan set aksara ASCII maka ia boleh menyimpan 65,535 aksara kerana ASCII menggunakan 1 bait setiap aksara. Sebaliknya, jika kita menggunakan set aksara utf8, had aksara ialah 21,844 kerana utf8 akan menggunakan 3 bait setiap aksara. Had saiz baris maksimum ialah 65,535 bait, yang bermaksud bahawa termasuk semua lajur, saiz baris tidak boleh melebihi 65,535 bait.
mysql> Create Table var_test(FName Varchar(32765) NOT NULL, LName Varchar(32766) NOT NULL); Query OK, 0 rows affected (0.25 sec)
Pertanyaan di atas mencipta jadual dengan dua lajur: FName Varchar(32765) dan LName Varchar(32766). Jadi jumlah panjang ialah 32765+2+32766+2=65535 (menggunakan 2 bait setiap lajur untuk menyimpan panjang).
mysql> Create Table var_test1(FName varchar(32766) NOT NULL, LName Varchar(32766) NOT NULL); ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
Kini, MySQL akan mengembalikan ralat apabila panjangnya ditambah sebanyak 1 bait, seperti yang ditunjukkan dalam pertanyaan di atas.
Atas ialah kandungan terperinci Apakah panjang maksimum lajur MySQL VARCHAR?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!