Гаразд, отже, ви переключили стовпець з Number на VARCHAR (5). Тепер вам потрібно оновити поле поштового індексу, щоб воно було заповнено лівим. SQL для цього мав би бути:
UPDATE MyTable
SET ZipCode = LPAD( ZipCode, 5, '0' );
Це заповнить усі значення у стовпці ZipCode 5 символами, додавши 0 зліва.
Звичайно, тепер, коли ви виправили всі свої старі дані, вам потрібно переконатись, що будь-які нові дані також мають нульовий відступ. Існує декілька шкіл думок, як правильно це зробити:
Обробляйте це в бізнес-логіці програми. Переваги: рішення, незалежне від бази даних, не передбачає дізнання більше про базу даних. Недоліки: потрібно обробляти скрізь, що пише в базу даних, у всіх додатках.
Обробляйте це за допомогою збереженої процедури. Переваги: Збережені процедури забезпечують ділові правила для всіх клієнтів. Недоліки: збережені процедури складніші, ніж прості оператори INSERT / UPDATE, і не такі портативні в базах даних. Голі ВСТАВКИ / ОНОВЛЕННЯ все ще можуть вставляти дані, не заповнені нулем.
Обробляйте його спусковим гачком. Переваги: Працюватиме для збережених процедур та оголених операторів INSERT / UPDATE. Недоліки: Найменш портативне рішення. Найповільніше рішення. Тригери важко отримати правильно.
У цьому випадку я б обробляв це на рівні програми (якщо взагалі), а не на рівні бази даних. Зрештою, не у всіх країнах використовується 5-значний поштовий індекс (навіть у США - наші поштові індекси насправді є Zip + 4 + 2: nnnnn-nnnn-nn), а деякі дозволяють використовувати букви, а також цифри. Краще НЕ намагатися змусити формат даних та приймати випадкові помилки даних, ніж заважати комусь вводити правильне значення, хоча це не зовсім те, що ви очікували.