Postgres VARCHAR vs TEXT

Inledning

Om du arbetar med PostgreSQL är det viktigt att ha en god förståelse för de olika datatyperna så att du kan välja rätt när du skapar dina databastabeller. Två vanliga teckentyper som används i PostgreSQL är TEXT- och VARCHAR-typerna. Även om det finns många likheter mellan dessa två typer finns det också några viktiga skillnader. I den här artikeln ska vi lära oss mer om dessa teckentyper och jämföra skillnaderna mellan Postgres VARCHAR vs TEXT.

Förutsättningar

Innan vi fortsätter med vår jämförelse av Postgres VARCHAR vs TEXT ska vi stanna upp och gå igenom några förutsättningar som krävs för att kunna följa med i exemplen i den här artikeln:

  • Säkerställ att PostgreSQL-servern har installerats och konfigurerats på rätt sätt. Tjänsten måste vara igång i bakgrunden.

Linux- och Windows-användare kan ladda ner PostgreSQL här:

  • För att starta PostgreSQL-servern i en Linuxmiljö använder du följande kommando:
1
sudo service postgresql start
  • Du kan se om tjänsten körs med kommandot nedan:
1
service postgresql status

Utmatningen av kommandot kommer att se ut på följande sätt:

1
2
3
4
5
6
7
8
9
â— postgresql.service – PostgreSQL RDBMS
Laddad: laddad (/lib/systemd/system/postgresql.service; enabled; vendor prese
Aktiv: aktiv (avslutad) sedan Thu 2019-08-01 14:51:20 PST; 36min ago
Process: 1230 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 1230 (code=exited, status=0/SUCCESS)
Aug 01 14:51:20 user-UX330UAK systemd: Starting PostgreSQL RDBMS…
Aug 01 14:51:20 user-UX330UAK systemd: Starting PostgreSQL RDBMS…
Aug 01 14:51:20 user-UX330UAK systemd: Startade PostgreSQL RDBMS.
linjer 1-8/8 (END)
  • Om du arbetar på en Windows-maskin kan följande instruktioner användas för att starta, stoppa och starta om PostgreSQL-servern:
  1. Öppna Kontrollpanelen
  2. Öppna Administrationsverktyg
  3. Öppna Tjänster
  4. Lokalisera tjänsten PostgreSQL Server
  5. Sluttligen startar, stoppar eller startar du om tjänsten

Vad är PostgreSQL-teckentyper?

Det finns tre teckentyper i PostgreSQL: character(n), som vanligtvis kallas char(n), character varying(n), som vanligtvis kallas varchar(n), och text. Värdet för n måste vara ett positivt heltal för dessa typer. Alla PostgreSQL-teckentyper kan lagra strängar på upp till n tecken.

Om du försöker lagra en längre sträng i en kolumn med den här PostgreSQL-teckentypen får du ett fel om inte de tecken som överskrider gränsen helt består av mellanslag. Om så är fallet kommer den överskridande strängen eller tecknen att avkortas till den tillåtna maximala längden.

Datatypen VARCHAR beter sig på samma sätt som datatypen TEXT när värdet för n inte anges. Prestandan för båda teckentyperna är också likartad när n utelämnas.

Till skillnad från andra databaser har PostgreSQL-teckentyperna ingen skillnad i prestanda mellan dem. För det mesta kommer vi att använda TEXT eller VARCHAR beroende på våra behov; vi använder VARCHAR(n) när vi vill att PostgreSQL ska utföra kontroll av längdgränser.

Exempel som använder PostgreSQL-teckentyperna

I det här exemplet fortsätter vi vår jämförelse mellan Postgres VARCHAR och TEXT genom att titta närmare på teckentyperna och hur de fungerar i en PostgreSQL-databas.

För att kunna fortsätta med våra exempel måste vi skapa en tabell:

1
2
3
4
5
CREATE TABLE pgsql_char_sample (
id serial PRIMARY KEY,
my_char VARCHAR (8),
my_text TEXT
);

När vi har skapat vår tabell kan vi utföra en insättningsoperation:

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, my_text)
VALUES
(
’Denna exempelsträng är för kolumnen varchar’,
’Denna exempelsträng är för textkolumnen som ska införas i PostgreSQL-tabellen’
);

Det ovanstående uttalandet resulterar i ett fel:

1
FEL: VALUE too long FOR TYPE CHARACTER VARYING(8)

Felet uppstår eftersom vi försökte infoga en sträng med mer än åtta tecken i kolumnen my_char som har datatypen varchar(8).

Vi försöker infoga provdata igen, den här gången med andra värden:

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, my_text)
VALUES
(
’String’,
’Denna exempelsträng är för den textkolumn som ska införas i PostgreSQL-tabellen’
);

För att verifiera att vår insättningsoperation lyckades kan vi använda följande uttalande:

1
SELECT * FROM pgsql_char_sample;

Resultatet bör se ut ungefär så här:

1
2
3
4
id | my_char | my_text
—-+———+———————————————————————————-
1 | String | Denna exempelsträng är för den textkolumn som ska införas i PostgreSQL TABLE
(1 ROW)

I exemplet vi tittade på, kan vi se att den enda skillnaden mellan kolumnerna VARCHAR(n) och TEXT är att en gräns kan sättas för kolumnen VARCHAR. I det här fallet ställer vi in VARCHAR till en längd på åtta tecken, så att strängar med längre längd inte kan infogas. Som vi nämnde tidigare har teckentyperna VARCHAR och TEXT inga observerbara skillnader i prestanda.

Slutsats

När du lagrar teckendata i PostgreSQL är det viktigt att välja rätt datatyp för varje kolumn i din tabell. I den här artikeln jämförde vi Postgres VARCHAR- respektive TEXT-teckentyperna och diskuterade deras grundläggande likheter och skillnader. Med hjälp av informationen i den här artikeln kommer du att vara förberedd på att utforma dina egna databastabeller i PostgreSQL och välja rätt datatyper för dina behov.

Lämna ett svar

Din e-postadress kommer inte publiceras.