sql >> Database >  >> RDS >> PostgreSQL

Uitleg nodig over karaktertypes in PostgreSQL

Als u van een C-achtergrond komt, is een tekenreekstype in PostgreSQL niet een reeks tekens.

Voor elk type foo in PostgreSQL is er een corresponderend arraytype foo[] die een reeks waarden van het type foo . aangeeft . Gebruik array-types alleen als u niet van plan bent ze veel te manipuleren in de database; als je dat doet, is het meestal beter om de array te normaliseren in een aparte tabel.

Afgezien van arraytypes, zijn er verschillende karaktertypes:

  • "char" (de dubbele aanhalingstekens zijn verplicht):een enkel teken. Meestal gebruikt in catalogustabellen. Gebruik dit type niet tenzij u weet wat u doet.

  • character(n) of char(n) :tekenreeks met vaste lengte. Het maakt niet uit wat je daar opbergt, het zal altijd worden opgevuld met spaties aan de rechterkant. Het gedrag, zoals gedicteerd door de SQL-standaard, is soms verrassend, dus dit type wil je zelden.

  • text :tekenreeks met willekeurige lengte. Dit is het type dat u wilt voor tekenreeksen, tenzij u wilt dat de database een lengtelimiet oplegt.

  • character varying(n) of varchar(n) :dit is hetzelfde als text met een extra lengtelimiet.

Om het af te ronden met een voorbeeld:

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. SQL-query voor GROUP BY, retourneert groepen die voldoen aan de voorwaarden van LEAST, COALESCE

  2. Kolomalias gebruiken in dezelfde SELECT-clausule

  3. Vraag laatste N gerelateerde rijen per rij op

  4. Een database verbinden met een Amazon VPC