Sobes.tech
Senior

Care este diferența dintre tipul de date TEXT și VARCHAR în PostgreSQL, și în ce constă diferența dintre VARCHAR și CHAR?

sobes.tech AI

Răspuns de la AI

В PostgreSQL типы TEXT и VARCHAR очень похожи и часто взаимозаменяемы, но есть некоторые отличия:

  • TEXT — это неограниченная по длине строка.
  • VARCHAR(n) — строка с ограничением длины до n символов.

Если длина строки превышает n, при использовании VARCHAR(n) будет ошибка, а TEXT не ограничен.

Отличия между VARCHAR и CHAR:

  • CHAR(n) — строка фиксированной длины n. Если строка короче, она дополняется пробелами справа.
  • VARCHAR(n) — строка переменной длины с максимальной длиной n.

Пример:

CREATE TABLE example (
    col_text TEXT,
    col_varchar VARCHAR(50),
    col_char CHAR(10)
);

INSERT INTO example VALUES ('hello', 'hello', 'hello');
-- col_char будет хранить 'hello     ' с пробелами до длины 10

В целом, TEXT и VARCHAR(n) по производительности почти не отличаются, а CHAR используется редко, когда нужна фиксированная длина.