sql server 分配给数字文字的类型是什么: 2. ,即 2 后跟一个点?
我很好奇,因为:
select convert(varchar(50), 2.)
union all
select convert(varchar(50), 2.0)
返回:
2
2.0
这让我问 2. 和 2.0 类型之间有什么区别?
Sql server 似乎通过找到可以容纳数字的最小存储类型来根据数字本身为数字文字分配类型。值 1222333 存储为 int,而 1152921504606846975 存储为 big int。
谢谢
编辑:我还想补充一下为什么这很重要。在 sql server 2008 r2 中,select 2/5 返回 0 而 select 2./5 返回 0.4,这是由于 sql server 处理这些类型的方式。在 oracle 和 Access 中选择 2/5(oracle: select 2/5 from dummy)返回 0.4。这就是它应该的方式。我想知道他们是否在 sql server 2012 中修复了这种行为。如果他们这样做了,我会感到惊讶。