sql >> Databasteknik >  >> RDS >> PostgreSQL

Behöver förklaring om teckentyper i PostgreSQL

Om du kommer från en C-bakgrund är en teckensträngstyp i PostgreSQL inte en rad tecken.

För varje typ foo i PostgreSQL finns det en motsvarande arraytyp foo[] som anger en uppsättning värden av typen foo . Använd arraytyper endast om du inte planerar att manipulera dem mycket inuti databasen; om du gör det är det vanligtvis bättre att normalisera arrayen till en separat tabell.

Bortsett från arraytyper finns det olika teckentyper:

  • "char" (dubbla citattecken krävs):ett enda tecken. Används oftast i katalogtabeller. Använd inte den här typen om du inte vet vad du gör.

  • character(n) eller char(n) :teckensträng med fast längd. Oavsett vad du förvarar där kommer den alltid att vara stoppad med mellanslag på höger sida. Beteendet, som dikteras av SQL-standarden, är ibland överraskande, så du vill sällan ha den här typen.

  • text :godtycklig längd teckensträng. Det här är den typ du vill ha för teckensträngar om du inte vill att databasen ska införa en längdbegränsning.

  • character varying(n) eller varchar(n) :detta är samma som text med en extra längdbegränsning.

För att avrunda det med ett exempel:

CREATE TABLE strtest(
   id serial PRIMARY KEY,
   sc "char",
   c character(10),
   vc character varying(10),
   vca character varying(10)[]
);

INSERT INTO strtest (sc, c, vc, vca)
   VALUES (
      'x',
      'short',
      'short',
      ARRAY['short1', 'short2', 'short3']
   );

SELECT sc, c, vc, vca[2] FROM strtest;
 sc |     c      |  vc   |  vca
----+------------+-------+--------
 x  | short      | short | short2
(1 row)



  1. Åtkomst nekad för användaren 'www-data'@'localhost – hur ska man hantera det?

  2. Maximal storlek på TEXT-datatypen i postgresql

  3. SQL - Hitta beställningar med endast specifika artiklar och visa det efter produkt

  4. Skapa och ta bort en PostgreSQL-databas på Ubuntu 16.04