Итак, вы переключили столбец с Number на 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), а в некоторых разрешены как буквы, так и цифры. Лучше НЕ пытаться форсировать формат данных и принимать случайные ошибки данных, чем препятствовать тому, чтобы кто-то вводил правильное значение, даже если его формат не совсем такой, как вы ожидали.