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 TEXTeller 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,VARCHARochTEXT.CHARär en teckentyp med fast längd medanVARCHARochTEXTä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