nyt kun tunnemme käsitteen character-tietotyypit CHAR, VARCHAR ja teksti vastaavasti PostgreSQL: ssä, tämä artikkeli keskittyy korostamaan keskeistä eroa niiden välillä.
mikä on CHAR-tietotyyppi?
tätä tietotyyppiä käytetään rajoitetun pituisten merkkien tallentamiseen. Se esitetään char(n)
tai character(n)
PostgreSQL: ssä, jossa n edustaa merkkien pituuden rajaa.Jos n: ää ei ole määritelty, oletusarvo on char(1)
tai character(1)
.
mikä on VARCHAR-tietotyyppi?
tätä tietotyyppiä käytetään rajoitetun pituisten merkkien tallentamiseen. Se esitetään varchar(n)
PostgreSQL: ssä, jossa n edustaa merkkien pituuden rajaa. Jos n: ää ei ole määritelty, oletusarvo on varchar
, jolla on rajoittamaton pituus.
mikä on tekstin tietotyyppi?
tätä tietotyyppiä käytetään rajoittamattoman pituisten merkkien tallentamiseen. Se esiintyy PostgreSQL: ssä nimellä text
. Varcharin esitys (ilman n: ää) ja teksti ovat samat.
alla olevassa taulukossa on suurin ero Charin, VARCHARIN ja tekstin välillä:
Comparison | CHAR | VARCHAR | TEXT |
---|---|---|---|
Syntax | CHAR(n) | VARCHAR(n) | TEXT |
Representation | char(n) or character(n) |
varchar(n) |
text |
Length of characters | Limited | Limited | Unlimited |
Spaces and padding | Gets typistetty | typistyy | Renains intact |
Jos n: ää ei ole määritelty | n = 1 | käsite n ei ole olemassa | |
Kyselysykli | Extra sykli tarkistaa pituus | extra sykli tarkistaa pituus | ei arviota merkin pituudesta |
esimerkki:
luodaan uusi taulukko(sano, character_tests) demonstraatiolle alla olevia komentoja käyttäen:
CREATE TABLE character_tests ( id serial PRIMARY KEY, x CHAR (1), y VARCHAR (10), z TEXT);
nyt lisätään uusi rivi char_test-taulukkoon käyttäen alla olevaa komentoa:
INSERT INTO character_tests (x, y, z)VALUES ( 'Geeks', 'This is a test for varchar', 'This is a very long text for the PostgreSQL text column' );
tässä vaiheessa PostgreSQL nostaa virheen, koska x-sarakkeen tietotyyppi on char(1) ja yritimme lisätä tähän sarakkeeseen merkkijonon, jossa on kolme merkkiä kuten alla:
ERROR: value too long for type character(1)
niin, nyt korjataan se.
INSERT INTO character_tests (x, y, z)VALUES ( 'G', 'This is a test for varchar', 'This is a very long text for the PostgreSQL text column' );
nyt saadaan y-sarakkeeseen sama virhe, kun syötettyjen merkkien määrä on suurempi kuin 10 kuten alla on esitetty:
ERROR: value too long for type character(10)
korjataan sekin.
INSERT INTO character_tests (x, y, z)VALUES ( 'Y', 'varchar(n)', 'This is a very long text for the PostgreSQL text column' );
nyt kun olemme onnistuneet antamaan arvot merkkitietotyypille, tarkista se suorittamalla alla oleva komento:
SELECT * FROM character_tests;
Lähtö: