2011-03-24 17 views

उत्तर

7

यह xxxxx-xxxx जैसा कुछ है, इसलिए varchar(10) अनुशंसित है।

यदि आप डेटाबेस में मानों के सिंटैक्स को देखना चाहते हैं, तो आप domain ज़िप कोड के लिए प्रकार बना सकते हैं।

CREATE DOMAIN zipcode varchar(10) 
    CONSTRAINT valid_zipcode 
    CHECK (VALUE ~ '[A-Z0-9-]+'); -- or a better regular expression 

आप this साइट है, जो इस regex प्रस्ताव पर एक नज़र हो सकता है:

(^\d{5}(-\d{4})?$)|(^[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}$) 

लेकिन आप इसे PostgreSQL regex वाक्य रचना के लिए काम करता है की जाँच करनी चाहिए।

+3

ध्यान रखें कि विभिन्न देशों के लिए ज़िप को अलग दिखते हैं। यदि ओपी की स्कीमा में गैर यूएस कोड नहीं हैं, तो आप इस तरह के पैटर्न का उपयोग नहीं कर सकते हैं। – DrColossos

+0

मैं पोस्टग्रेएसक्यूएल में n00b हूं, और इसे CREATE तालिका बनाने के साथ DOMAIN बनाते हैं ?, –

+2

नहीं। आप एक डोमेन को परिभाषित करते हैं, और बाद में आप वर्कर (10) के बजाय "ज़िप कोड" का उपयोग कर सकते हैं। आप अनिवार्य रूप से एक नया डेटाटाइप परिभाषित करते हैं, जो अपना स्वयं का सत्यापन लाता है। – Daniel

0

यह इस बात पर निर्भर करता है कि आप किस प्रकार के ज़िप चाहते हैं। यदि आप सुनिश्चित हैं कि आपको केवल मानक 5 अंकों को स्टोर करने की आवश्यकता होगी तो एक int का उपयोग सबसे अधिक स्थान की बचत होगी।

हालांकि यदि आपको 5 + 4 विस्तारित करने की आवश्यकता है तो 10 अंकों का वर्ण फ़ील्ड सबसे अच्छा है। मैं व्यक्तिगत रूप से सुझाव देता हूं कि यदि भविष्य में अंतरराष्ट्रीय डाक कोडों को स्टोर करने की आवश्यकता समाप्त हो जाती है तो यह भविष्य में आसान हो जाता है, 10 अंकों में बस हर संभव डाक कोड प्रारूप शामिल होता है।

+1

ज़िप कोड में ज़ीरो कोड हो सकता है ताकि ज़िप कोड के लिए 'int' का उपयोग किया जा सके। एक बुरा विचार। ज़िप कोड संख्याएं नहीं हैं, वे तार हैं जो संख्याओं (और कभी-कभी एक हाइफ़न) से बने होते हैं। –

+1

int (5) * ZEROFILL * संपत्ति के साथ 00005 में 5 बनाने के लिए। –

10

मैं यहां प्रस्तुत सलाह से दृढ़ता से असहमत हूं।

  1. स्वीकृत उत्तर उन चीजों को स्वीकार करता है जो अंक नहीं हैं।
  2. प्रश्न ज़िप कोड के बारे में है, डाक कोड नहीं।
  3. यदि हम मानते हैं कि पोस्ट गलत है और इसका मतलब है अंतरराष्ट्रीय डाक कोड, ऐसे वर्ण हैं जो अंतरराष्ट्रीय डाक कोड में दिखाई देते हैं जो उस सूची में प्रकट नहीं होते हैं, और कई अंतरराष्ट्रीय - और यूएस घरेलू डाक कोड दस से अधिक हो सकते हैं पात्रों
  4. हम वास्तव में सवाल वे पूछा, के बारे में ज़िप कोड का जवाब है, तो कुछ भी लेकिन अंक के लिए कोई आवास (और यकीनन हाइफन)
  5. अमेरिका ज़िप कोड अप करने के लिए 11 अंकों का होना कर सकते हैं होना चाहिए (दो डैश गिनने वाले 13 वर्ण) - एक ज़िप, एक ज़िप + 4, और एक ज़िप +6 है (जो प्रोग्रामर ज़िप + 4 + 2 कॉल करेंगे) नोटेशन; आखिरी बार गगनचुंबी इमारतों, विश्वविद्यालयों, et cetera
  6. यूएस ज़िप कोड हमेशा गैर-ऋणात्मक पूर्णांक होते हैं, और इसलिए टेक्स्ट डेटा के रूप में संग्रहीत नहीं किया जाना चाहिए, जो गैर-कैनन प्रतिनिधित्व समस्याओं के अधीन है (किसी भी व्यक्ति से सिस्टम से पूछें उस समय के बारे में उन्हें पता चला कि उनके ज़िप 00203 ने ज़िप 203 से मेल नहीं खाया था, जब वे लगातार अनावश्यक रूप से स्ट्रिंग प्रस्तुतियों को पार्स करते समय गलती से प्राप्त हुए थे)
  7. यदि आप दिखाते हैं कि आप वास्तव में अंतरराष्ट्रीय डाक कोड ट्रैक कर रहे हैं, तो लघु वर्ण अनुक्रम सीमित टेक्स्ट फ़ील्ड यहां नौकरी भी शुरू नहीं करें। "चीन" शब्द दिमाग में आता है।

मेरे opinon:

  1. तय करें कि क्या आप वास्तव में अमेरिका पोस्टल कोड या अंतरराष्ट्रीय
  2. संभाल रहे हैं आप अमेरिका पोस्टल कोड संभाल रहे हैं, तो उन्हें अहस्ताक्षरित पूर्णांकों ट्रैक करते हैं और पाठ का प्रतिनिधित्व करते समय शून्य के साथ उन्हें बाएं-पैड। (यूनिक्स टाइमस्टैम्प और स्थानीय टीजेड प्रस्तुतिकरणों को सोचें यदि आपको समझने की आवश्यकता है कि यह लंबे समय तक क्यों आसान होगा।)
  3. यदि आप अंतरराष्ट्रीय डाक कोड प्रबंधित कर रहे हैं, तो उन्हें एक असंबद्ध यूनिकोड स्ट्रिंग में स्टोर करें, उन्हें देश में बांध दें प्रतिनिधित्व बाधाओं के साथ देश द्वारा प्रतिनिधित्व, और देश को मान्य। यह समस्या सामने की तुलना में कहीं अधिक कठिन है। अंतर्राष्ट्रीय पते पृथ्वी पर कम से कम मानकीकृत चीजों में से कुछ हैं। प्रतीक्षा करें कि आप यह पता लगाएंगे कि जापानी घर की संख्या कैसे काम करती है, या ब्रिटिश डाक 6-कोड में अंतराल क्यों है।
संबंधित मुद्दे