2009-08-13 13 views
13

अस्वीकरण: मैं सामान्य रूप से एसक्यूएल और डेटाबेस के लिए बहुत नया हूं।[मेरा] एसक्यूएल वचरर आकार और शून्य-समाप्ति


मुझे एक ऐसा फ़ील्ड बनाने की आवश्यकता है जो अधिकतम 32 वर्ण टेक्स्ट डेटा संग्रहीत करे। क्या "VARCHAR(32)" का अर्थ है कि मेरे पास है मेरे डेटा के लिए बिल्कुल 32 वर्ण? क्या मुझे शून्य-समाप्ति के लिए एक अतिरिक्त चरित्र आरक्षित करने की आवश्यकता है?

मैंने एक साधारण परीक्षण किया और ऐसा लगता है कि यह एक WYSIWYG बफर है। हालांकि, मैं उन लोगों से ठोस जवाब प्राप्त करना चाहता था जो वास्तव में जानते हैं कि वे क्या कर रहे हैं।


मेरे पास सी [++] पृष्ठभूमि है, इसलिए यह प्रश्न मेरे सिर में अलार्म घंटी उठा रहा है।

उत्तर

24

हां, आपके पास आपके पास 32 वर्ण हैं। एसक्यूएल कुछ प्रोग्रामिंग भाषाओं की तरह नल टर्मिनेटेड तारों के साथ खुद को चिंता नहीं करता है।

+0

धन्यवाद, यह एक राहत है। क्षेत्र चुनते समय मेमोरी आवंटन के स्पष्टीकरण के लिए –

1

आपका वर्चर विनिर्देश आकार आपके डेटा का अधिकतम आकार है, इसलिए इस मामले में, 32 वर्ण। हालांकि, VARCHARS एक गतिशील क्षेत्र हैं, इसलिए वास्तविक भौतिक भंडारण केवल आपके डेटा का आकार है, साथ ही एक या दो बाइट्स।

यदि आप एक VARCHAR (32) में 10-वर्ण स्ट्रिंग डालते हैं, तो भौतिक संग्रहण 11 या 12 बाइट्स होगा (मैनुअल आपको सटीक सूत्र बताएगा)।

हालांकि, जब MySQL परिणाम सेट (यानी चयन के बाद) से निपट रहा है, तो 32 बाइट प्रत्येक रिकॉर्ड के लिए उस फ़ील्ड के लिए स्मृति में आवंटित किए जाएंगे।

+0

+1। मुझे आश्चर्य है कि यह टेक्स्ट और बीएलओबी फ़ील्ड के साथ कैसे काम करता है ... – Leonel