Чому б ви оголосили розмір поля більшим за фактичні дані, які ви очікуєте для зберігання в ньому?
Якщо початкова версія вашої заявки буде підтримувати американські та канадські адреси (що я випливаю з того, що ви називаєте ці розміри у своєму запитанні), я оголошу це поле як VARCHAR2 (9) (або VARCHAR2 ( 10) якщо ви збираєтесь зберігати дефіс у полі ZIP + 4). Навіть дивлячись на пости, які інші вносили до поштових індексів у різних країнах, VARCHAR2 (9) або VARCHAR2 (10) буде достатнім для більшості, як не для всіх інших країн.
Унизу лінії завжди можна змінити стовпчик, щоб збільшити довжину, якщо виникне потреба. Але взагалі важко запобігти комусь, десь із тієї чи іншої причини вирішити зробити "креативом" і ввести 50 символів у поле VARCHAR2 (50) (тобто тому, що вони хочуть іншого рядка на етикетці доставки). Ви також маєте справу з тестуванням крайових випадків (чи буде кожна програма, яка відображає ZIP, обробляти 50 символів?). І з тим, що коли клієнти отримують дані з бази даних, вони, як правило, розподіляють пам’ять на основі максимального розміру даних, які будуть отримані, а не фактичної довжини заданого рядка. Напевно, це не велика справа в цьому конкретному випадку, але 40 байт в ряд може стати пристойним шматком оперативної пам’яті для деяких ситуацій.
Крім того, ви можете також розглянути можливість зберігання (принаймні для адрес США) поштового індексу та розширення +4 окремо. Зазвичай корисно мати змогу генерувати звіти за географічним регіоном, і ви, можливо, часто захочете скласти все у поштовий індекс, а не розбивати його на розширення +4. У цей момент корисно не намагатися ПІДТРІЛИТИ перші 5 символів для поштового індексу.