Char
и varchar
- это типы данных в SQL, так как они находятся на многих других языках (поэтому этот вопрос может быть многоязычным).Почему я должен использовать char вместо varchar?
Из чего я понимаю, разница в том, что если я объявил Char
как Char(20)
, он выделил бы 20 (байт/бит) [Может ли кто-нибудь прояснить этот бит тоже? На данный момент я буду использовать байты.]. Тогда, если бы я использовал только 16 байт, у меня все равно было бы четыре выделенных для этого поля. (Отходы 4 байта памяти.)
Однако, если я объявил varchar
как varchar(20)
и использовал только 16 байт, он выделил бы только 16 байт.
Неужели это лучше? Зачем кому-то выбирать char
? Это враждебные причины, или что-то мне не хватает?
Черт, я этого не видел. Интересно, почему он не появился, когда я спрашивал. По крайней мере, у меня есть ответ, спасибо! – KidCode
Чтобы ответить на ваш другой вопрос, 'Char (20)' выделит достаточно места для 20 символов. Сколько места зависит от вашей используемой кодировки, но обычный английский текст ('latin1' - это пример в документах) требует только 1 байт на символ. Таким образом, это будет 20 байтов в кодировке latin1, но может быть больше, если вы используете неанглийский язык. –
Для ** SQL Server **: 'varchar (n)' всегда несет как минимум 2 байта служебных данных, поэтому 'varchar (2)' не использует 0-2 байта, а 2-4 байта, а 'char (2) ** ** ** ** использует всего 2 байта (например, для двухкодовых кодов стран). Поэтому, если вы храните 16 символов текста в столбце 'varchar (20)', он использует 18 байт памяти –