Jak utworzyć pole tekstowe o stałej szerokości (czyli jak zrobić TEXT, a nie VARCHAR)?

Przeszukując grupę dyskusyjną google natknąłem się na temat gdzie ktoś potrzebował tabele z polami o stałej długości uzupełnianej spacjami (export danych do zewnętrznego programu).

Jak uzupełnić pole typu text tabeli spacjami?
Sprawa jest banalnie prosta a całe zamieszanie wywołał Bill G. gdzie w accesie umieścił pola typu TEXT a tak na prawdę są to pola typu VARCHAR

VARCHAR – pola tekstowe o zmiennej długości (dane pole zajmuje w bazie tyle miejsca ile znaków zawiera) - nie mylić z typem MEMO(nota)
CHAR – pola tekstowe o stałej długości (dane pole jest zawsze uzupełniane spacjami)

Aby zmienić typ pola na CHAR w tabeli wystarczy użyć polecenia SQL
alter table NazwaTabeli alter column NazwaKolumny CHAR (15)

Po takim zabiegu pole zawsze będzie uzupełniane spacjami do zadeklarowanej długości.
Przy czym z poziomu kreatora graficznego nie można rozróżnić jaki typ pola ma dana tabela

Aby zmienić typ pola z powrotem na VARCHAR (TEXT)
alter table NazwaTabeli alter column NazwaKolumny VARCHAR (15)
lub
alter table NazwaTabeli alter column NazwaKolumny TEXT (15)

Z literatury wynika że dostęp do pola typu CHAR jest szybsze niż do pola typu VARCHAR,
przy czym różnice są na tyle małe że nie warto stosować pól CHAR z tego względu,
natomiast przeglądanie rekordów jest szybsze przy zastosowaniu pól typu VARCHAR (na jednej stronie może zmieścić się więcej rekordów)
no i pojemność bazy szybciej rośnie przy polach typu CHAR, a przy stosowaniu pliku MDB ma to dosyć spore znaczenie.

Reasumując przy dużej rozbieżności długości pól należy stosować VARCHAR (chyba że potrzebujemy mieć pola uzupełnione spacjami),
a pola typu CHAR jeżeli mamy zawsze pola o tej samej długości lub jeżeli opieramy indeks tabeli o pole z typem znakowym

Pozdrawiam Jakub Nowak
jakubnowak@2be.pl