Ok, więc zmieniłeś kolumnę z Number na VARCHAR (5). Teraz musisz zaktualizować pole kodu pocztowego, aby było wypełnione po lewej stronie. SQL, który to zrobiłby, wyglądałby następująco:
UPDATE MyTable
SET ZipCode = LPAD( ZipCode, 5, '0' );
Spowoduje to dopełnienie wszystkich wartości w kolumnie ZipCode do 5 znaków, dodając „0” po lewej stronie.
Oczywiście, teraz, gdy masz już naprawione wszystkie stare dane, musisz upewnić się, że wszystkie nowe dane są również wypełnione zerami. Istnieje kilka szkół myślenia o tym, jak to zrobić:
Obsługuj to w logice biznesowej aplikacji. Zalety: rozwiązanie niezależne od bazy danych, nie wymaga uczenia się więcej o bazie danych. Wady: wymaga obsługi wszędzie tam, gdzie zapisuje się do bazy danych, we wszystkich aplikacjach.
Obsługuj to za pomocą procedury składowanej. Zalety: procedury składowane wymuszają reguły biznesowe dla wszystkich klientów. Wady: procedury składowane są bardziej skomplikowane niż proste instrukcje INSERT / UPDATE i nie są przenoszone między bazami danych. Sama INSERT / UPDATE może nadal wstawiać dane wypełnione niezerami.
Obsługuj go za pomocą spustu. Zalety: będzie działać w przypadku procedur składowanych i samych instrukcji INSERT / UPDATE. Wady: Najmniej przenośne rozwiązanie. Najwolniejsze rozwiązanie. Wyzwalacze mogą być trudne do naprawienia.
W tym przypadku załatwiłbym to na poziomie aplikacji (jeśli w ogóle), a nie na poziomie bazy danych. W końcu nie wszystkie kraje używają 5-cyfrowego kodu pocztowego (nawet USA - nasze kody pocztowe to w rzeczywistości Zip + 4 + 2: nnnnn-nnnn-nn), a niektóre dopuszczają zarówno litery, jak i cyfry. Lepiej NIE próbować wymuszać formatu danych i akceptować sporadyczny błąd danych, niż uniemożliwić komuś wprowadzenie poprawnej wartości, nawet jeśli format nie jest taki, jakiego się spodziewałeś.