PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Potrzebujesz wyjaśnień na temat typów znaków w PostgreSQL

Jeśli pochodzisz z języka C, typ ciągu znaków w PostgreSQL to nie tablica znaków.

Dla każdego typu foo w PostgreSQL istnieje odpowiedni typ tablicy foo[] który oznacza tablicę wartości typu foo . Używaj typów tablicowych tylko wtedy, gdy nie planujesz manipulować nimi w dużej mierze w bazie danych; jeśli to zrobisz, zwykle lepiej jest znormalizować tablicę do osobnej tabeli.

Pomijając typy tablic, istnieją różne typy znaków:

  • "char" (wymagane są podwójne cudzysłowy):pojedynczy znak. Najczęściej używane w tabelach katalogowych. Nie używaj tego typu, chyba że wiesz, co robisz.

  • character(n) lub char(n) :ciąg znaków o stałej długości. Bez względu na to, co tam przechowujesz, zawsze będzie wyściełane miejscami po prawej stronie. Zachowanie podyktowane standardem SQL jest czasami zaskakujące, więc rzadko chcesz tego typu.

  • text :ciąg znaków o dowolnej długości. To jest typ, który chcesz dla ciągów znaków, chyba że chcesz, aby baza danych narzuciła limit długości.

  • character varying(n) lub varchar(n) :to to samo co text z dodatkowym limitem długości.

Aby uzupełnić to przykładem:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instalacja postgresql z Homebrew i Rails na Mountain Lion

  2. Postgres LIKE '...%' nie używa indeksu

  3. Postgresql grupuj według dla wielu linii

  4. PostgreSQL - zmieniono wartość kolumny - wybierz optymalizację zapytania

  5. Jak mogę uniemożliwić Postgresowi wstawianie podzapytania?