Хорошо, значит вы переключили столбец с номера на VARCHAR (5). Теперь вам нужно обновить поле почтового индекса, чтобы оно было дополнено слева. SQL для этого будет:
UPDATE MyTable
SET ZipCode = LPAD( ZipCode, 5, '0' );
Это дополняет все значения в столбце ZipCode до 5 символов, добавляя «0» слева.
Конечно, теперь, когда вы исправили все свои старые данные, вам нужно убедиться, что все ваши новые данные также заполнены нулями. Есть несколько школ мысли о правильном способе сделать это:
Обрабатывать это в бизнес-логике приложения. Преимущества: решение, не зависящее от базы данных, не требует больше знаний о базе данных. Недостатки: необходимо обрабатывать везде, где выполняется запись в базу данных, во всех приложениях.
Обработка с помощью хранимой процедуры. Преимущества: хранимые процедуры обеспечивают соблюдение бизнес-правил для всех клиентов. Недостатки: хранимые процедуры более сложны, чем простые операторы INSERT / UPDATE, и не так переносимы между базами данных. Чистая INSERT / UPDATE все еще может вставлять данные, не заполненные нулями.
Обращайтесь с ним спусковым крючком. Преимущества: будет работать для хранимых процедур и простых операторов INSERT / UPDATE. Недостатки: наименее портативное решение. Самое медленное решение. Триггеры могут быть трудно понять правильно.
В этом случае я бы обработал это на уровне приложения (если вообще), а не на уровне базы данных. В конце концов, не все страны используют 5-значный почтовый индекс (даже США - наши почтовые индексы на самом деле Zip + 4 + 2: nnnnn-nnnn-nn) и некоторые разрешающие буквы, а также цифры. Лучше НЕ пытаться форсировать формат данных и принимать случайные ошибки данных, чем препятствовать тому, чтобы кто-то ввел правильное значение, даже если этот формат не совсем то, что вы ожидали.