Зачем объявлять размер поля больше, чем фактические данные, которые вы ожидаете в нем хранить?
Если первоначальная версия вашего приложения будет поддерживать адреса в США и Канаде (что я делаю вывод из того факта, что вы указываете эти размеры в своем вопросе), я бы объявил поле как VARCHAR2 (9) (или VARCHAR2 ( 10) если вы собираетесь хранить дефис в полях ZIP + 4). Даже если посмотреть на сообщения других пользователей о почтовых индексах в разных странах, VARCHAR2 (9) или VARCHAR2 (10) будет достаточным для большинства, если не для всех других стран.
Внизу строки вы всегда можете ИЗМЕНИТЬ столбец, чтобы при необходимости увеличить длину. Но, как правило, трудно помешать кому-то где-нибудь проявить «творческий подход» и заполнить 50 символов в поле VARCHAR2 (50) по той или иной причине (то есть потому, что им нужна другая строка на транспортной этикетке). Вы также должны иметь дело с тестированием граничных случаев (будет ли каждое приложение, отображающее ZIP, обрабатывать 50 символов?). И с тем фактом, что когда клиенты извлекают данные из базы данных, они обычно выделяют память на основе максимального размера данных, которые будут извлечены, а не фактической длины данной строки. Возможно, в этом конкретном случае не так много, но 40 байтов на строку могут быть приличным фрагментом ОЗУ для некоторых ситуаций.
Кроме того, вы также можете рассмотреть возможность хранения (по крайней мере, для адресов в США) почтового индекса и расширения +4 отдельно. Как правило, полезно иметь возможность создавать отчеты по географическому региону, и вам часто может потребоваться объединить все в почтовый индекс, а не разбивать его по расширению +4. На этом этапе полезно не пытаться вывести SUBSTR первых 5 символов почтового индекса.
person
Justin Cave
schedule
28.11.2008