Сегодня 12 июля, суббота ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7281
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
RMCreative.ru - Блог
RMCreative.ru - Блог
Голосов: 1
Адрес блога: http://rmcreative.ru/feed/
Добавлен: 2008-06-12 21:34:00 блограйдером ZaiSL
 

MySQL, длина int

2012-09-24 20:35:52 (читать в оригинале)

Провёл опрос знакомых разработчиков. По результатам выяснилось, что документация MySQL совсем не помогает понять, что же такое N в типе данных int(N).

Если вы думаете, что это размер хранимых данных в байтах или символах, то это не так. В int(1) запросто можно записать 2147483647.

Если вы думаете, что это максимальное количество символов, которое база вам покажет при SELECT, то это, опять же, не совсем так.

CREATE TABLE `test` (
  `number` int(3) DEFAULT NULL,
  `zerofill_number` int(3) unsigned zerofill DEFAULT NULL
);
 
INSERT INTO test (number, zerofill_number) VALUES (123456789, 123456789), (1, 1);
 
SELECT * FROM test;

На выходе получим:

number    | zerofill_number
--------------------------- 
123456789 | 123456789
        1 |       001

То есть в случае int(3) DEFAULT NULL у нас (3) вообще ни на что не повлиял (разве что MySQL будет материться на непонятном языке при попытке добавить FK, где с другой стороны, например, int(11)).

В случае же int(3) unsigned zerofill DEFAULT NULL получаем аналог PHP-шного str_pad. То есть, если при преобразовании значения в строку эта самая строка короче N, то она добивается слева нулями до длины N.

И в том и в другом случае размер данных никак не меняется.




 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по количеству голосов (152) в категории «Истории»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.