PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Benötigen Sie eine Erklärung zu Zeichentypen in PostgreSQL

Falls Sie einen C-Hintergrund haben, ist ein Zeichenkettentyp in PostgreSQL nicht ein Array von Zeichen.

Für jeden Typ foo in PostgreSQL gibt es einen entsprechenden Array-Typ foo[] das bezeichnet ein Array von Werten vom Typ foo . Verwenden Sie Array-Typen nur dann, wenn Sie nicht vorhaben, sie in der Datenbank stark zu manipulieren. In diesem Fall ist es normalerweise besser, das Array in einer separaten Tabelle zu normalisieren.

Abgesehen von Array-Typen gibt es verschiedene Zeichentypen:

  • "char" (die doppelten Anführungszeichen sind erforderlich):ein einzelnes Zeichen. Wird hauptsächlich in Katalogtabellen verwendet. Verwenden Sie diesen Typ nur, wenn Sie wissen, was Sie tun.

  • character(n) oder char(n) :Zeichenkette mit fester Länge. Egal was Sie dort verstauen, es wird immer auf der rechten Seite mit Leerzeichen aufgefüllt. Das Verhalten, wie es der SQL-Standard vorschreibt, ist manchmal überraschend, daher möchten Sie diesen Typ selten.

  • text :Zeichenkette beliebiger Länge. Dies ist der gewünschte Typ für Zeichenfolgen, es sei denn, Sie möchten, dass die Datenbank eine Längenbegrenzung auferlegt.

  • character varying(n) oder varchar(n) :Dies ist dasselbe wie text mit einer zusätzlichen Längenbegrenzung.

Um es mit einem Beispiel abzurunden:

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)