sql server中money和bigint数据类型的区别是什么?
答案 0 :(得分:10)
bigint
范围为-9,223,372,036,854,775,808
至9,223,372,036,854,775,807
money
范围为-922,337,203,685,477.5808
至922,337,203,685,477.5807
它们都占用8个字节的存储空间并存储为大整数,唯一的区别是SQL Server理解4个最右边的数字位于小数点之后。
如果你这样做
declare @m money = 1.2345
declare @b bigint = 12345
select cast(@m as BINARY(8)), cast(@b as BINARY(8))
您看到存储空间相同。
------------------ ------------------
0x0000000000003039 0x0000000000003039
然而,money
数据类型的行为与您自己只使用bigint
的行为完全不同。使用money
are to be avoided进行计算,但它们仍然比类似的整数除法更精确。
declare @m money = 1.9999, @m2 money = 1
select @m/@m2 /*Returns 1.9999*/
declare @b bigint = 19999, @b2 bigint = 10000
select @b/@b2 /*Returns 1*/
答案 1 :(得分:0)
我觉得它非常简单; bigint
无法保留小数点,money
可以。
实施例
bigint -------------- money
44(正确)------- 44(正确)并将在db 44.0000中保存
4.4(不正确)---- 4.4(正确)并在db 4.4000中保存