sql >> Database teknologi >  >> RDS >> PostgreSQL

Har brug for forklaring på karaktertyper i PostgreSQL

Hvis du kommer fra en C-baggrund, er en tegnstrengtype i PostgreSQL ikke en række tegn.

For hver type foo i PostgreSQL er der en tilsvarende matrixtype foo[] der angiver en række værdier af typen foo . Brug kun array-typer, hvis du ikke planlægger at manipulere dem meget inde i databasen; hvis du gør det, er det normalt bedre at normalisere arrayet til en separat tabel.

Bortset fra array-typer, er der forskellige tegntyper:

  • "char" (de dobbelte anførselstegn er påkrævet):et enkelt tegn. Mest brugt i katalogtabeller. Brug ikke denne type, medmindre du ved, hvad du laver.

  • character(n) eller char(n) :tegnstreng med fast længde. Uanset hvad du opbevarer der, vil den altid være polstret med mellemrum i højre side. Adfærden, som dikteret af SQL-standarden, er nogle gange overraskende, så du vil sjældent have denne type.

  • text :tegnstreng af vilkårlig længde. Dette er den type, du ønsker for tegnstrenge, medmindre du ønsker, at databasen skal pålægge en længdegrænse.

  • character varying(n) eller varchar(n) :dette er det samme som text med en ekstra længdegrænse.

For at runde det af med et eksempel:

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. MySQL Dato Ændringer til gårsdagens dato Efter JPA Gem

  2. Hvordan filtrerede indekser kunne være en mere kraftfuld funktion

  3. Implementer bitmaske eller relationel ACL i PHP

  4. Opdatering af flere rækker i MySQL