पहली नज़र से, यह जाहिर होता मैं दो बुनियादी विकल्प हैं एक डेटाबेस तालिका में ZIP codes संग्रहीत करने के लिए: यानी char(5)
या varchar(9)
4 विस्तार का समर्थन करने के लिएक्या डेटाबेस में यूएस ज़िप कोड संग्रहित करने के लिए एक पूर्णांक कॉलम का उपयोग करना एक अच्छा विचार है?
- पाठ (शायद सबसे आम),
- संख्यात्मक अर्थात 32-बिट पूर्णांक
दोनों डेटा की आवश्यकताओं को पूरा करेंगे, अगर हम मानते हैं कि कोई अंतर्राष्ट्रीय चिंता नहीं है। अतीत में हम आम तौर पर सिर्फ पाठ मार्ग चला चुके थे, लेकिन मैं सोच रहा था कि कोई भी विपरीत करता है? बस संक्षिप्त तुलना से यह लग रहा है पूर्णांक विधि की तरह दो स्पष्ट लाभ हैं:
- यह अपनी प्रकृति के साधन, स्वचालित रूप से केवल numerics तक ही सीमित द्वारा, है (जबकि मान्यता के बिना पाठ शैली पत्र और ऐसे कौन-सी नहीं संग्रहीत कर सकती है , मेरे ज्ञान के लिए, कभी भी ज़िप कोड में मान्य)। यह का अर्थ यह नहीं है कि हम सामान्य रूप से उपयोगकर्ता इनपुट को मान्य करने के लिए/चाहेंगे/चाहें!
- 5 या 9 बाइट्स के बजाय 4 बाइट्स (जो 9 अंकों के ज़िप कोड के लिए भी बहुत कुछ होना चाहिए) में कम जगह लेती है।
इसके अलावा, ऐसा लगता है कि यह प्रदर्शन आउटपुट को ज्यादा नुकसान नहीं पहुंचाएगा। एक संख्यात्मक मान पर ToString()
को थप्पड़ मारना मुश्किल है, एक हाइफ़न या स्पेस डालने के लिए सरल स्ट्रिंग मैनिपुलेशन का उपयोग करें या जो भी +4 एक्सटेंशन के लिए है, और प्रमुख शून्यों को पुनर्स्थापित करने के लिए स्ट्रिंग स्वरूपण का उपयोग करें।
क्या ऐसी कोई चीज है जो int
का उपयोग यूएस-केवल ज़िप कोड के लिए डेटाटाइप के रूप में करने से हतोत्साहित करेगी?
मैं कसम खाता हूँ सकता है यह एक कई बार धोखा है, लेकिन मैं हो रही है उन्हें खोजने में परेशानी ... – rmeador
@rmeador: http://stackoverflow.com/questions/310540/best-practices-for-storing-postal-addresses-in-a-database-rdbms बहुत समान है, जबकि http://stackoverflow.com/questions/747802/integer-vs-string-in-डेटा विषय पर भी छूता है। – Shog9
स्लिपिंग टूस्ट्रिंग पर एक बग होने का इंतजार है: क्या होगा यदि 00001 ज़िप कोड बन जाए? फिर आप 10001 और 00001-0001 के बीच नहीं बता सकते हैं। – Mark