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 उपरोक्त क्वेरी में दिखाए अनुसार त्रुटि लौटाता है।