Thực tế, kiểu dữ liệu VARCHAR lưu trữ dữ liệu ký tự độ dài thay đổi trong single-byte và multi-byte character. Cú pháp cho kiểu dữ liệu này là VARCHAR(n), trong đó n là số ký tự tối đa và phải được chỉ định khi tạo bảng. Trước MySQL 5.03, giá trị n có thể trong khoảng 0 đến 255 nhưng từ MySQL 5.03 trở đi, giá trị có thể trong khoảng 0 đến 65,535.
Số ký tự tối đa lưu trữ trong VARCHAR phụ thuộc vào kích thước hàng tối đa và character set được sử dụng. Nếu dùng character set ASCII, có thể lưu 65,535 ký tự vì ASCII dùng 1 byte mỗi ký tự. Ngược lại, nếu dùng utf8, giới hạn ký tự sẽ là 21,844 vì utf8 dùng 3 byte mỗi ký tự. Giới hạn kích thước hàng tối đa là 65,535 byte, nghĩa là tính cả tất cả cột không được vượt quá 65,535 byte.
Ví dụ
mysql> CREATE TABLE var_test(FName VARCHAR(32765) NOT NULL, LName VARCHAR(32766) NOT NULL); Query OK, 0 rows affected (0.25 sec)
Truy vấn trên tạo bảng với hai cột: FName VARCHAR(32765) và LName VARCHAR(32766). Tổng độ dài sẽ là 32765+2+32766+2=65535 (2 byte dùng cho mỗi cột để lưu độ dài).
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
Khi tăng độ dài thêm 1 byte, MySQL trả về lỗi như truy vấn trên.