Что означает число 50 в VARCHAR(50): байты или символы?

В PostgreSQL VARCHAR(50) ограничивает длину 50 символами, а не 50 байтами. Для другой СУБД необходимо уточнить её правила: одинаковое название типа не гарантирует одинаковую семантику.

Короткий ответ

Что ответить на собеседовании

В PostgreSQL VARCHAR(50) ограничивает длину 50 символами, а не 50 байтами. Для другой СУБД необходимо уточнить её правила: одинаковое название типа не гарантирует одинаковую семантику.

Подробный разбор

Ответ с пояснениями

В PostgreSQL VARCHAR(50) ограничивает длину 50 символами, а не 50 байтами. Для другой СУБД необходимо уточнить её правила: одинаковое название типа не гарантирует одинаковую семантику.

В многобайтовой кодировке строка из 50 символов может занимать больше 50 байт плюс служебные данные. char_length считает символы, octet_length — байты. Это не обязательно число визуально воспринимаемых знаков: составной символ может состоять из нескольких кодовых точек. Ограничение VARCHAR не означает предварительное резервирование ровно 50 байт для каждого значения.

Источник: www.postgresql.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее