Nu när vi är bekanta med begreppet teckendatatyper CHAR, varchar respektive TEXT i PostgreSQL, kommer den här artikeln att fokusera på att markera huvudskillnaden mellan dem.
vad är röding datatyp?
denna datatyp används för att lagra tecken med begränsad längd. Det representeras som char(n)
eller character(n)
I PostgreSQL, där n representerar gränsen för längden på tecknen.Om n inte anges är det som standard char(1)
eller character(1)
.
vad är VARCHAR datatyp?
den här datatypen används för att lagra tecken med begränsad längd. Det representeras som varchar(n)
I PostgreSQL, där n representerar gränsen för längden på tecknen. Om n inte anges är det som standard varchar
som har obegränsad längd.
vad är TEXTDATATYP?
denna datatyp används för att lagra tecken med obegränsad längd. Det representeras som text
I PostgreSQL. Utförandet av varchar (utan n) och text är desamma.
nedanstående tabell ger den stora skillnaden mellan CHAR, varchar och 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 stympad | blir stympad | Renains intakt | om n inte anges | n = 1 | n = oändlighet | begreppet n existerar inte | Sökcykel | Extra cykel för att kontrollera längden | extra cykel för att kontrollera längd | ingen utvärdering av teckenlängd |
exempel:
låt oss skapa en ny tabell(säg, character_tests) för demonstrationen med hjälp av nedanstående kommandon:
CREATE TABLE character_tests ( id serial PRIMARY KEY, x CHAR (1), y VARCHAR (10), z TEXT);
låt oss nu infoga en ny rad i char_test-tabellen med kommandot nedan:
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' );
i detta skede kommer PostgreSQL att höja ett fel eftersom datatypen för X-kolumnen är char(1) och vi försökte infoga en sträng med tre tecken i den här kolumnen som visas nedan:
ERROR: value too long for type character(1)
så låt oss nu fixa det.
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' );
Nu får vi samma fel för y-kolumnen eftersom antalet inmatade tecken är större än 10 som visas nedan:
ERROR: value too long for type character(10)
låt oss fixa det också.
INSERT INTO character_tests (x, y, z)VALUES ( 'Y', 'varchar(n)', 'This is a very long text for the PostgreSQL text column' );
nu när vi har lyckats tilldela värdena till teckendatatypen, kontrollera det genom att köra kommandot nedan:
SELECT * FROM character_tests;
utgång: