Ответ 1
Да, у вас в вашем распоряжении 32 персонажа. SQL не относится к нуль-завершаемым строкам, как это делают некоторые языки программирования.
Отказ от ответственности: я очень новичок в SQL и базах данных в целом.
Мне нужно создать поле, в котором будет храниться максимум 32 символа текстовых данных. "VARCHAR(32)
" означает, что у меня есть ровно 32 символы для моих данных? Нужно ли резервировать дополнительный символ для нулевого завершения?
Я провел простой тест, и кажется, что это буфер WYSIWYG. Однако я хотел получить конкретный ответ от людей, которые действительно знают, что они делают.
У меня есть фон C [++], поэтому этот вопрос поднимает тревожные звонки в моей голове.
Да, у вас в вашем распоряжении 32 персонажа. SQL не относится к нуль-завершаемым строкам, как это делают некоторые языки программирования.
Ваш размер спецификации VARCHAR - это максимальный размер ваших данных, поэтому в этом случае 32 символа. Однако VARCHARS являются динамическим полем, поэтому фактическое физическое хранилище используется только размером ваших данных плюс один или два байта.
Если вы поместите 10-значную строку в VARCHAR (32), физическое хранилище будет 11 или 12 байтов (руководство скажет вам точную формулу).
Однако, когда MySQL имеет дело с наборами результатов (т.е. после SELECT), 32 байта будут выделены в памяти для этого поля для каждой записи.