वास्तव में 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 एक त्रुटि देता है जैसा कि ऊपर क्वेरी में दिखाया गया है।