Nyní, že jsme obeznámeni s koncepcí znakové datové typy CHAR, VARCHAR a TEXT, respektive v PostgreSQL, tento článek se zaměří na zvýraznění klíčový rozdíl mezi nimi.
Co je datový typ CHAR?
tento datový typ se používá k ukládání znaků omezené délky. To je reprezentován jako char(n)
nebo character(n)
v PostgreSQL, kde n představuje omezení délky znaků.Pokud n není zadáno, výchozí hodnota je char(1)
nebo character(1)
.
Co je datový typ VARCHAR?
tento datový typ se používá k ukládání znaků omezené délky. Je reprezentován jako varchar(n)
v PostgreSQL, kde n představuje limit délky znaků. Pokud n není zadáno, má výchozí hodnotu varchar
, která má neomezenou délku.
Co je textový datový typ?
tento datový typ se používá k ukládání znaků neomezené délky. V PostgreSQL je reprezentován jako text
. Výkon varcharu (bez n) A textu jsou stejné.
níže uvedená tabulka uvádí hlavní rozdíl mezi CHAR, VARCHAR a textem:
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 zkrácený | Dostane zkrácen | Renains neporušené |
Pokud n není zadán | n = 1 | n = nekonečno | Pojem n neexistuje |
Dotaz cyklu | Další cyklus zkontrolovat délku | Další cyklus zkontrolovat délku | Žádné hodnocení znaků |
Příklad:
Pojďme vytvořit novou tabulku(řekněme, character_tests) pro demonstraci pomocí níže uvedených příkazů:
CREATE TABLE character_tests ( id serial PRIMARY KEY, x CHAR (1), y VARCHAR (10), z TEXT);
Teď pojďme vložit nový řádek do char_test tabulky pomocí níže uvedeného příkazu:
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' );
V této fázi PostgreSQL zvýší chybu jako datový typ x je sloupec char(1) a snažili jsme se vložit řetězec s tři postavy v tomto sloupci, jak je uvedeno níže:
ERROR: value too long for type character(1)
Tak, teď, pojďme to napravit.
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' );
Nyní, budeme mít stejné chyby pro sloupec y jako počet znaků, zadali, je větší než 10, jak je uvedeno níže:
ERROR: value too long for type character(10)
Pojďme to napravit.
INSERT INTO character_tests (x, y, z)VALUES ( 'Y', 'varchar(n)', 'This is a very long text for the PostgreSQL text column' );
Nyní, že se nám podařilo úspěšně přiřadit hodnoty typu dat znak, zkontrolujte to spuštěním níže uvedeného příkazu:
SELECT * FROM character_tests;
Výstup: