PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Precisa de explicação sobre os tipos de caracteres no PostgreSQL


Caso você tenha um background em C, um tipo de string de caracteres no PostgreSQL não uma matriz de caracteres.

Para cada tipo foo no PostgreSQL, existe um tipo de array correspondente foo[] que denota uma matriz de valores do tipo foo . Use tipos de array apenas se você não planeja manipulá-los muito dentro do banco de dados; se você fizer isso, geralmente é melhor normalizar a matriz em uma tabela separada.

Deixando de lado os tipos de array, existem diferentes tipos de caracteres:

  • "char" (as aspas duplas são obrigatórias):um único caractere. Usado principalmente em tabelas de catálogo. Não use este tipo a menos que você saiba o que está fazendo.

  • character(n) ou char(n) :cadeia de caracteres de comprimento fixo. Não importa o que você armazene lá, ele sempre será preenchido com espaços no lado direito. O comportamento, conforme ditado pelo padrão SQL, às vezes é surpreendente, então você raramente deseja esse tipo.

  • text :cadeia de caracteres de comprimento arbitrário. Este é o tipo que você deseja para cadeias de caracteres, a menos que queira que o banco de dados imponha um limite de comprimento.

  • character varying(n) ou varchar(n) :é o mesmo que text com um limite de comprimento adicional.

Para completar com um exemplo:
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)