Mar*_*ith 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))
Run Code Online (Sandbox Code Playgroud)
你看到存储是一样的.
------------------ ------------------
0x0000000000003039 0x0000000000003039
Run Code Online (Sandbox Code Playgroud)
但是,money数据类型的行为并不像您bigint自己使用的那样.money 应避免计算,但它们仍然比类似的整数除法更精确.
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*/
Run Code Online (Sandbox Code Playgroud)