Задавайте вопросы, мы ответим
Вы не зашли.
Всем известно, что размер целочисленных полей можно уменьшать при необходимости, например SMALLINT(3) вместо стандартного SMALLINT(5). А на практике оказалось, что размер SMALLINT(3) лимитирован размером SMALLINT(5), т.е. от SMALLINT(3) толку нет.
Хотел использовать TINYINT(1) для поля статуса, аля значения 0-9, но оказалось, что в поле без проблем сохраняется и значение 100.
Это всё моя фантазия была или это нормальное поведение?
Неактивен
Ребят, совсем никто не в курсе? Оно не критично, но спортивный интерес всё же имеется)))
Неактивен
Я ведь тоже когда-то думал, что циферка - это размер поля в байтах. Прямо ностальгия
http://sqlinfo.ru/forum/viewtopic.php?id=2258
Неактивен
Эту циферку я понимаю как количество байт для стрингового представления, в Вашем случае оно же "ширина поля" Создаю поле TINYINT(1), добавляю в него значение 100 и при выборке мне возвращается 100, т.е. никаких обрезаний не происходит, отсюда и вопрос возник, должно ж было обрезать
Неактивен
Нет, обрезать не будет.
http://dev.mysql.com/doc/refman/5.0/en/ … butes.html
The display width does not constrain the range of values that can be stored in the column. Nor does it prevent values wider than the column display width from being displayed correctly. For example, a column specified as SMALLINT(3) has the usual SMALLINT range of -32768 to 32767, and values outside the range permitted by three digits are displayed in full using more than three digits.
Неактивен
Плохо понял написанное, но получается, что явное указание размера поля по сути "пук" ни к чему не приводящий? Если всё же эта цифра на что-то влияет, то приведите плз практический пример с полным размером поля и уменьшенным, практика легче воспринимается чем теория
Неактивен
В написанном говориться, что "ширина поля" не может быть ограничением на размер хранимых значений и если хранимой значение по кол-ву символов больше чем "ширина поля", то отображаться значение будет полностью (без обрезания).
Насчет того, когда это нужно на практике, не знаю. Возможно, если вам нужно получить значения определенной ширины, а недостающую часть слева заполнить пробелами или нулями для каких-нибудь почтовых индексов или чего-то ещё, то можно использовать "ширину поля".
Неактивен
Ключевое слово "zerofill", теперь всё понятно, спасибо
Неактивен
zerofill для наглядности. Без него слева будут пробелы. Дока говорит, что ширина поля передается в result set и приложение может её использовать, но как это проиллюстрировать я не знаю. Родной клиент десяток пробелов в отличие от нулей ставить не хочет.
Неактивен
Ага, я у себя тоже нигде пробелов не увидел Но ограничение для zerofill вполне удачное объяснение.
Неактивен