ชนิดข้อมูล VARCHAR เก็บข้อมูลตัวอักษรความยาวเปลี่ยนแปลงได้ในหน่วยไบต์เดี่ยวและหลายไบต์ รูปแบบคือ VARCHAR(n) โดย n คือจำนวนตัวอักษรสูงสุด ต้องระบุตอนสร้างตาราง ก่อน MySQL 5.03 ค่า n อยู่ในช่วง 0 ถึง 255 แต่ใน MySQL 5.03 ขึ้นไป อยู่ในช่วง 0 ถึง 65,535
จำนวนตัวอักษรสูงสุดที่เก็บได้ใน VARCHAR ขึ้นอยู่กับขนาดแถวสูงสุด (maximum row size) และ character set ที่ใช้ หากใช้ 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)
คำสั่งสร้างตาราง 2 คอลัมน์ 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 ก็คืนข้อผิดพลาด