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