Sammanfattning: I den här handledningen kommer du att lära dig om PostgreSQLs teckendatatyper, inklusive CHAR
, VARCHAR
och TEXT
, och lära dig hur du väljer rätt teckentyper för dina tabeller.
Introduktion till PostgreSQLs teckentyper
PostgreSQL tillhandahåller tre primära teckentyper: CHARACTER(n)
eller CHAR(n)
, CHARACTER VARYINGING(n)
eller VARCHAR(n)
och TEXT
, där n
är ett positivt heltal.
I följande tabell visas teckentyperna i PostgreSQL:
Teckentyper | Beskrivning |
CHARACTER VARYING(n) , VARCHAR(n) |
variabel-längd med längdgräns |
CHARACTER(n) , CHAR(n) |
fast längd, blank paded |
TEXT , VARCHAR |
variabel obegränsad längd |
Både CHAR(n)
och VARCHAR(n)
kan lagra upp till n
tecken. Om du försöker lagra en sträng som har fler än n
tecken kommer PostgreSQL att utfärda ett fel.
Ett undantag är dock att om de överdrivna tecknen är alla mellanslag, förkortar PostgreSQL mellanslagen till den maximala längden (n
) och lagrar tecknen.
Om en sträng uttryckligen kastas till en CHAR(n)
eller VARCHAR(n)
trunker PostgreSQL strängen till n
tecken innan den infogas i tabellen.
Datatypen TEXT
kan lagra en sträng med obegränsad längd.
Om du inte specificerar helheten n för datatypen VARCHAR
beter den sig som datatypen TEXT
. Prestandan för VARCHAR
(utan storleken n
) och TEXT
är densamma.
Den enda fördelen med att ange längdspecifikationen för datatypen VARCHAR
är att PostgreSQL kommer att utfärda ett fel om du försöker infoga en sträng som har mer än n
tecken i kolumnen VARCHAR(n)
.
Till skillnad från VARCHAR
är CHARACTER
eller CHAR
utan längdspecifikation (n
) samma som CHARACTER(1)
eller CHAR(1)
.
Till skillnad från andra databassystem finns det i PostgreSQL ingen prestandaskillnad mellan de tre teckentyperna.
I de flesta fall bör du använda TEXT
eller VARCHAR
. Och du använder VARCHAR(n)
när du vill att PostgreSQL ska kontrollera längden.
PostgreSQL teckentypsexempel
Låt oss ta en titt på ett exempel för att se hur datatyperna CHAR
, VARCHAR
och TEXT
fungerar.
Skapa först en ny tabell som heter character_tests:
Code language: SQL (Structured Query Language) (sql)
Insätt sedan en ny rad i tabellen character_tests
.
Code language: SQL (Structured Query Language) (sql)
PostgreSQL utfärdade ett fel:
Code language: SQL (Structured Query Language) (sql)
Detta beror på att datatypen för kolumnen x
är char(1)
och att vi försökte infoga en sträng med tre tecken i denna kolumn. Vi fixar det:
Code language: SQL (Structured Query Language) (sql)
PostgreSQL utfärdar ett annat fel:
Code language: Shell Session (shell)
Detta beror på att vi försökte infoga en sträng med mer än 10 tecken i kolumnen y
som har datatypen varchar(10)
.
Följande anvisning infogar en ny rad i tabellen character_tests
framgångsrikt.
Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
Code language: Shell Session (shell)
Sammanfattning
- PostgreSQL har stöd för datatyperna
CHAR
,VARCHAR
ochTEXT
.CHAR
är en teckentyp med fast längd medanVARCHAR
ochTEXT
är teckentyper med varierande längd. - Använd
VARCHAR(n)
om du vill validera längden på strängen (n
) innan du infogar i eller uppdaterar till en kolumn. -
VARCHAR
(utan längdangivelse) ochTEXT
är likvärdiga.
- Var denna handledning till hjälp?
- JaNej