2013-07-22 5 views
10

में स्ट्रिंग स्टोरेज आकार SQL Server और SQL Server Compact का उपयोग करने के बाद, मैंने हाल ही में Sqlite का उपयोग करना शुरू कर दिया है। मैं वर्तमान में स्क्लाइट में टेबल बना रहा हूं और देखा है कि स्ट्रिंग कॉलम को परिभाषित करते समय स्ट्रिंग लंबाई सीमा इनपुट करने की आवश्यकता नहीं है। SQL Server में 255-वर्ण स्ट्रिंग डेटाटाइप को परिभाषित किया गया है: varchar(255)SQL Server Compact में यह परिभाषित किया गया है: nvarchar(255)एसक्लाइट

हालांकि, Sqlite में, ऐसा लगता है कि कॉलम डेटाटाइप को किसी भी आकार सीमा को इनपुट किए बिना text के रूप में परिभाषित किया जा सकता है। क्या स्क्लाइट में आकार सीमा को परिभाषित करने का कोई तरीका है? या यह भी जरूरी नहीं है?

+1

आप स्ट्रिंग स्तंभ लंबाई निर्दिष्ट करने की आवश्यकता नहीं है, लेकिन आप कर सकते हैं (देखें [वाक्य रचना] (http://www.sqlite.org/syntaxdiagrams.html#type-name))। हालांकि, अन्य डीबी कार्यान्वयन के विपरीत, निश्चित आकार वाले क्षेत्रों को स्तंभों के लिए आवंटित नहीं किया जाता है, बल्कि पंक्तियों का निर्माण वस्तुओं की सूचियों की तरह किया जाता है। इसलिए व्यापक स्तंभ रखने के लिए कोई "जुर्माना" नहीं है जिसका उपयोग ज्यादातर संकीर्ण मूल्यों के लिए किया जाता है। –

उत्तर

6

SQLite में एक मैनेजबल स्ट्रिंग या ब्लॉब सीमा है। डिफ़ॉल्ट 10^9 बाइट्स है। See documentation बीटीडब्ल्यू आपको कॉलम घोषणा पर इसे निर्दिष्ट करने की आवश्यकता नहीं है।

9

SQLite आपको VARCHAR(255) या NVARCHAR(255) लिखने देता है, लेकिन इसका एकमात्र प्रासंगिक हिस्सा CHAR है (जो कॉलम "टेक्स्ट एफ़िनिटी" देता है)। मानक एसक्यूएल के साथ संगतता के लिए कोष्ठक में संख्या की अनुमति है, लेकिन इसे अनदेखा किया जाता है।

SQLite में, वहाँ तारों पर लंबाई की कमी के लिए बहुत कम जरूरत है, क्योंकि (1) यह स्थान की मात्रा को प्रभावित नहीं करता स्ट्रिंग डिस्क पर लेता है और (2) (SQLITE_MAX_LENGTH को छोड़कर) कोई मनमाना सीमा नहीं है स्ट्रिंग्स की लंबाई पर जिसका उपयोग INDEX में किया जा सकता है।

आप एक वास्तविक एक कॉलम में वर्णों की संख्या पर कोई सीमा जगह की जरूरत है, तो बस CHECK(LENGTH(TheColumn) <= 255) तरह की कोई समस्या जोड़ें।

संबंधित मुद्दे