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, VARCHAR och TEXT. CHAR är en teckentyp med fast längd medan VARCHAR och TEXT ä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) och TEXT är likvärdiga.
  • Var denna handledning till hjälp?
  • JaNej

Lämna ett svar

Din e-postadress kommer inte publiceras.