sql >> Databáze >  >> RDS >> PostgreSQL

Potřebujete vysvětlení o typech znaků v PostgreSQL

V případě, že pocházíte z prostředí C, typ znakového řetězce v PostgreSQL není pole znaků.

Pro každý typ foo v PostgreSQL existuje odpovídající typ pole foo[] který označuje pole hodnot typu foo . Používejte typy polí pouze v případě, že s nimi v databázi neplánujete příliš manipulovat; pokud tak učiníte, je obvykle lepší normalizovat pole do samostatné tabulky.

Pomineme-li typy polí, existují různé typy znaků:

  • "char" (uvozovky jsou povinné):jeden znak. Většinou se používá v katalogových tabulkách. Tento typ nepoužívejte, pokud nevíte, co děláte.

  • character(n) nebo char(n) :řetězec znaků s pevnou délkou. Bez ohledu na to, co tam uložíte, bude vždy na pravé straně polstrované mezerami. Chování, jak ho diktuje standard SQL, je někdy překvapivé, takže tento typ málokdy chcete.

  • text :řetězec znaků libovolné délky. Toto je typ, který chcete pro řetězce znaků, pokud nechcete, aby databáze zavedla omezení délky.

  • character varying(n) nebo varchar(n) :je to stejné jako text s dalším omezením délky.

Abych to završil příkladem:

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. Python:n-ticové indexy musí být celá čísla, nikoli str, když vybíráte z tabulky mysql

  2. Jak vytvořit uložené procedury PL/SQL s parametry v databázi Oracle

  3. MySql:Vícenásobné levé spojení dává nesprávný výstup

  4. Hibernate nemůže automaticky vytvořit schéma na Heroku postgres