SQL Server为什么不支持无符号数据类型?
-
10-10-2019 - |
题
我专门考虑未签名 int
.
这是一个实用的例子:当您的身份列最大化时,您会做什么?可以去 BigInt
(8个字节存储而不是4)或重构应用程序以支持负整数,甚至可以创建自己的规则 这个答案;这些选项都不是最佳选择。
UInt
将是理想的解决方案,但是SQL Server不提供(MySQL在哪里)。
我知道未签名的数据类型不是SQL标准(SQL-2003)的一部分,但对我来说似乎仍然是浪费。
不包括这些的原因是什么(在SQL Server中或在标准中)?
解决方案
如果我不得不猜测,我会说他们试图避免类型的扩散。一般来说,没有任何签名整数无法做到的任何事情,签名的整数无法做到。至于您需要2147483648和4294967296之间的数字时,您可能应该转到8个字节整数,因为该数字最终也将超过4294967296。
其他提示
为此,您可以将-2,147,483,648用作种子价值。
Identity(-2147483648, 1)
我找到了一个类似的问题 在Microsoft Connect上。
吉姆·霍格(Jim Hogg)(计划经理)的答复有一些专业和骗局,用于添加Unsigned Int。主要骗局是实施隐式类型转换的规则成为正确的噩梦。
该请求已关闭,因为“不会修复”。
不隶属于 StackOverflow