Sobes.tech
Back to questions
Senior
5

Чем отличается тип данных TEXT от VARCHAR в PostgreSQL, а также чем отличается VARCHAR от CHAR?

Companies where asked
Лига Цифровой ЭкономикиЛига Цифровой Экономики

Answer from AI

sobes.tech 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 используется редко, когда нужна фиксированная длина.