teraz, gdy znamy koncepcję znaków typów danych CHAR, VARCHAR i TEXT odpowiednio w PostgreSQL, w tym artykule skupimy się na podświetleniu kluczowej różnicy między nimi.
Co to jest typ danych CHAR?
Ten typ danych służy do przechowywania znaków o ograniczonej długości. Jest reprezentowany jako char(n)
lub character(n)
w PostgreSQL, gdzie N oznacza ograniczenie długości znaków.Jeśli nie podano n, domyślnie jest to char(1)
lubcharacter(1)
.
Co to jest typ danych VARCHAR?
Ten typ danych służy do przechowywania znaków o ograniczonej długości. Jest reprezentowany jako varchar(n)
w PostgreSQL, gdzie N oznacza granicę długości znaków. Jeśli nie podano n, domyślnie jest to varchar
, która ma nieograniczoną długość.
Co to jest typ danych tekstowych?
Ten typ danych służy do przechowywania znaków o nieograniczonej długości. Jest reprezentowany jako text
w PostgreSQL. Działanie varchara (bez n) i tekstu jest takie samo.
poniższa tabela zawiera główną różnicę między CHAR, VARCHAR i TEXT:
Comparison | CHAR | VARCHAR | TEXT |
---|---|---|---|
Syntax | CHAR(n) | VARCHAR(n) | TEXT |
Representation | char(n) or character(n) |
varchar(n) |
text |
Length of characters | Limited | Limited | Unlimited |
Spaces and padding | Gets | zostaje obcięte | zmienia się w stanie nienaruszonym |
jeśli nie podano n | N = 1 | N = nieskończoność | koncepcja n nie istnieje |
cykl zapytań | dodatkowy cykl sprawdzania długości | dodatkowy cykl sprawdzania długości | brak oceny długości znaków |
przykład:
stwórzmy nową tabelę(powiedzmy, character_tests) dla demonstracji za pomocą poniższych poleceń:
CREATE TABLE character_tests ( id serial PRIMARY KEY, x CHAR (1), y VARCHAR (10), z TEXT);
teraz wstawmy nowy wiersz do tabeli char_test używając poniższego polecenia:
INSERT INTO character_tests (x, y, z)VALUES ( 'Geeks', 'This is a test for varchar', 'This is a very long text for the PostgreSQL text column' );
na tym etapie PostgreSQL spowoduje błąd, ponieważ typ danych kolumny x to char(1) i próbowaliśmy wstawić do tej kolumny ciąg z trzema znakami, jak pokazano poniżej:
ERROR: value too long for type character(1)
więc teraz to naprawmy.
INSERT INTO character_tests (x, y, z)VALUES ( 'G', 'This is a test for varchar', 'This is a very long text for the PostgreSQL text column' );
teraz otrzymamy ten sam błąd dla kolumny y, ponieważ liczba wprowadzonych znaków jest większa niż 10, Jak pokazano poniżej:
ERROR: value too long for type character(10)
INSERT INTO character_tests (x, y, z)VALUES ( 'Y', 'varchar(n)', 'This is a very long text for the PostgreSQL text column' );
teraz, gdy udało nam się pomyślnie przypisać wartości do typu danych character, sprawdź to, uruchamiając poniższe polecenie:
SELECT * FROM character_tests;
Wyjście: