sql >> Base de Datos >  >> RDS >> PostgreSQL

Necesita explicación sobre los tipos de caracteres en PostgreSQL

En caso de que tenga experiencia en C, un tipo de cadena de caracteres en PostgreSQL no una matriz de caracteres.

Para cada tipo foo en PostgreSQL, hay un tipo de matriz correspondiente foo[] que denota una matriz de valores de tipo foo . Utilice tipos de matriz solo si no planea manipularlos mucho dentro de la base de datos; si lo hace, generalmente es mejor normalizar la matriz en una tabla separada.

Dejando de lado los tipos de matrices, existen diferentes tipos de caracteres:

  • "char" (las comillas dobles son obligatorias):un solo carácter. Se utiliza principalmente en tablas de catálogo. No utilice este tipo a menos que sepa lo que está haciendo.

  • character(n) o char(n) :cadena de caracteres de longitud fija. No importa lo que almacene allí, siempre estará acolchado con espacios en el lado derecho. El comportamiento, dictado por el estándar SQL, a veces es sorprendente, por lo que rara vez querrá este tipo.

  • text :cadena de caracteres de longitud arbitraria. Este es el tipo que desea para las cadenas de caracteres, a menos que desee que la base de datos imponga un límite de longitud.

  • character varying(n) o varchar(n) :esto es lo mismo que text con un límite de longitud adicional.

Para redondearlo con un ejemplo:

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)