Подтвердить что ты не робот

Почему SQL Server не поддерживает неподписанный тип данных?

Я специально думаю о unsigned int.

Вот практический пример: что вы будете делать, когда ваш личный столбец будет максимальным? Можно либо перейти BigInt (хранить 8 байтов вместо 4), либо реорганизовать приложение для поддержки отрицательных целых чисел, и даже создать свои собственные правила, как указано в этом ответе; ни один из этих вариантов не является оптимальным.

UInt будет идеальным решением, но SQL Server не предлагает его (где MySQL работает).

Я понимаю, что неподписанные типы данных не являются частью стандарта SQL (SQL-2003), но все равно кажутся мне пустой тратой.

В чем причина их не включать (в SQL Server или в стандарт)?

4b9b3361

Ответ 1

Если бы я должен был догадаться, я бы сказал, что они пытаются избежать распространения типов. Вообще говоря, нет ничего, что может означать целое число без знака, которое не может сделать целое число со знаком. Что касается случая, когда вам нужно число от 2147483648 до 4294967296, вы, вероятно, должны перейти к 8-байтовому целому числу, поскольку число также в конечном итоге превысит 4294967296.

Ответ 2

Для этой цели в качестве начального значения вы можете использовать -2,147,483,648.

Identity(-2147483648, 1)

Ответ 3

Я нашел аналогичный вопрос в Microsoft Connect.

В ответ от Jim Hogg (Program Manager) есть некоторые pro и con для добавления unsigned int. Основной кон - это правила для реализации неявных преобразований типов, которые становятся кошмаром, чтобы получить право.

Запрос был закрыт как "Не исправить".