Я специально думаю о неподписанных int
.
Вот практический пример: что вы делаете, когда ваш столбец идентичности достигает максимума? Можно либо пойти BigInt
(хранилище 8 байтов вместо 4), либо провести рефакторинг приложения для поддержки отрицательных целых чисел и даже создать свои собственные правила, как указано в этом ответе ; ни один из этих вариантов не является оптимальным.
UInt
было бы идеальным решением, но SQL Server не предлагает его (в отличие от MySQL).
Я понимаю, что беззнаковые типы данных не являются частью стандарта SQL (SQL-2003), но все же мне кажутся пустой тратой.
По какой причине они не включены (в SQL Server или в стандарт)?
Ответы:
Если бы мне пришлось угадывать, я бы сказал, что они пытаются избежать увеличения количества типов. Вообще говоря, нет ничего, что могло бы сделать целое число без знака, чего не могло бы сделать целое число со знаком. Что касается случая, когда вам нужно число от 2147483648 до 4294967296, вам, вероятно, следует перейти к 8-байтовому целому числу, поскольку это число также в конечном итоге превысит 4294967296.
источник
ORDER BY ABS(Id)
), особенно если столбец является кластеризованным первичным ключом. Например, использование 32-битной временной метки unix часто является удобным способом сократить 4 байта стандартной даты и времени SQL.Для этой цели вы можете использовать -2 147 483 648 в качестве начального значения.
источник
Я нашел аналогичный вопрос в Центре разработки Microsoft Office.
В ответе Джима Хогга (менеджера программ) есть несколько плюсов и минусов за добавление неподписанных int. Главный минус заключается в том, что правила реализации неявного преобразования типов становятся кошмаром.
Запрос был закрыт как «Не исправить».
источник
Они не поддерживают ключевые слова SIGNED и UNSIGNED, потому что они нестандартны. В стандарте SQL все числовые типы подписаны.
UNSIGNED (и SIGNED, что по умолчанию) - это расширения MySQL, которые могут быть полезны для хранения более высоких беззнаковых чисел в том же количестве байтов и запрета отрицательных чисел.
источник