Summary: I denne tutorial lærer du om PostgreSQL-tegndatatyperne, herunder CHAR
, VARCHAR
og TEXT
, og lærer hvordan du vælger de rigtige tegntyper til dine tabeller.
Introduktion til PostgreSQL-tegntyperne
PostgreSQL tilbyder tre primære tegntyper: CHARACTER(n)
eller CHAR(n)
, CHARACTER VARYINGING(n)
eller VARCHAR(n)
og TEXT
, hvor n
er et positivt heltal.
Den følgende tabel illstrate tegntyperne i PostgreSQL:
Karaktertyper | Beskrivelse |
CHARACTER VARYING(n) , VARCHAR(n) |
variabel-længde med længdebegrænsning |
CHARACTER(n) , CHAR(n) |
fast længde, blankpolstret |
TEXT , VARCHAR |
variabel ubegrænset længde |
Både CHAR(n)
og VARCHAR(n)
kan lagre op til n
tegn. Hvis du forsøger at gemme en streng, der har mere end n
tegn, vil PostgreSQL udstede en fejl.
En undtagelse er dog, at hvis de overskydende tegn alle er mellemrum, afkorter PostgreSQL mellemrummene til den maksimale længde (n
) og gemmer tegnene.
Hvis en streng eksplicit castes til en CHAR(n)
eller VARCHAR(n)
, afkorter PostgreSQL strengen til n
tegn, før den indsættes i tabellen.
Datatypen TEXT
kan gemme en streng med ubegrænset længde.
Hvis du ikke angiver n heltal for datatypen VARCHAR
, opfører den sig som datatypen TEXT
. Ydelsen af VARCHAR
(uden størrelsen n
) og TEXT
er den samme.
Den eneste fordel ved at angive længdeangivelsen for datatypen VARCHAR
er, at PostgreSQL vil udstede en fejl, hvis du forsøger at indsætte en streng, der har mere end n
tegn, i kolonnen VARCHAR(n)
.
I modsætning til VARCHAR
er CHARACTER
eller CHAR
uden længdeangivelsen (n
) det samme som CHARACTER(1)
eller CHAR(1)
.
I modsætning til andre databasesystemer er der i PostgreSQL ingen ydelsesforskel mellem de tre tegentyper.
I de fleste tilfælde bør du bruge TEXT
eller VARCHAR
. Og du bruger VARCHAR(n)
, når du vil have PostgreSQL til at kontrollere længden.
PostgreSQL-tegntypeeksempler
Lad os tage et kig på et eksempel for at se, hvordan datatyperne CHAR
, VARCHAR
og TEXT
fungerer.
Opret først en ny tabel kaldet character_tests:
Code language: SQL (Structured Query Language) (sql)
Indsæt derefter en ny række i tabellen character_tests
.
Code language: SQL (Structured Query Language) (sql)
PostgreSQL udstedte en fejl:
Code language: SQL (Structured Query Language) (sql)
Dette skyldes, at datatypen for kolonnen x
er char(1)
, og vi forsøgte at indsætte en streng med tre tegn i denne kolonne. Lad os rette den:
Code language: SQL (Structured Query Language) (sql)
PostgreSQL udsender en anden fejl:
Code language: Shell Session (shell)
Dette skyldes, at vi forsøgte at indsætte en streng med mere end 10 tegn i kolonnen y
, der har datatypen varchar(10)
.
Den følgende anvisning indsætter en ny række i tabellen character_tests
med succes.
Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
Code language: Shell Session (shell)
Summary
- PostgreSQL understøtter
CHAR
,VARCHAR
ogTEXT
datatyperneCHAR
,VARCHAR
ogTEXT
.CHAR
er en karaktertype med fast længde, mensVARCHAR
ogTEXT
er karaktertyper med varierende længde. - Brug
VARCHAR(n)
, hvis du vil validere strengenes længde (n
), før du indsætter i eller opdaterer til en kolonne. -
VARCHAR
(uden længdeangivelsen) ogTEXT
er ækvivalente.
- Var denne vejledning nyttig?
- JaNej