จริงๆ แล้วประเภทข้อมูล VARCHAR จะเก็บข้อมูลอักขระที่มีความยาวผันแปรได้ในรูปแบบไบต์เดียวและหลายไบต์ ไวยากรณ์สำหรับประเภทข้อมูลนี้คือ VARCHAR(n) โดยที่ n คือจำนวนอักขระสูงสุดและต้องเป็น ระบุไว้ในขณะที่สร้างตาราง ก่อน MySQL 5.03 ค่าของ n สามารถอยู่ในช่วง 0 ถึง 255 แต่ในและหลัง MySQL 5.03 ค่าสามารถอยู่ในช่วง 0 ถึง 65,535
จำนวนอักขระสูงสุดที่เก็บไว้ใน VARCHAR ขึ้นอยู่กับขนาดแถวสูงสุดและชุดอักขระที่ใช้ หากเราใช้ชุดอักขระ ASCII จะสามารถเก็บอักขระได้ 65,535 ตัวเนื่องจาก ASCII จะใช้ 1 ไบต์ต่ออักขระ ในทางกลับกัน หากเราใช้ชุดอักขระ utf8 ขีดจำกัดอักขระจะอยู่ที่ 21,844 เนื่องจาก utf8 จะใช้ 3 ไบต์ต่ออักขระ ขีดจำกัดขนาดแถวสูงสุดคือ 65,535 ไบต์ ซึ่งหมายความว่าเมื่อรวมคอลัมน์ทั้งหมดแล้ว จะต้องไม่เกิน 65,535 ไบต์
ตัวอย่าง
mysql> Create Table var_test(FName Varchar(32765) NOT NULL, LName Varchar(32766) NOT NULL); Query OK, 0 rows affected (0.25 sec)
แบบสอบถามด้านบนสร้างตารางที่มีสองคอลัมน์ FName Varchar(32765) และ LName Varchar(32766) ดังนั้นความยาวทั้งหมดจะเป็น 32765+2+32766+2=65535(แต่ละคอลัมน์ใช้ 2 ไบต์ในการจัดเก็บความยาว)
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
ตอนนี้ เมื่อเพิ่มความยาวขึ้น 1 ไบต์ MySQL จะแสดงข้อผิดพลาดตามที่แสดงในแบบสอบถามด้านบน