经常要保留小数,在程序中计算太麻烦了,还要转换操作。直接在数据库中操作来得方便。
把数据类型定义成decimal/numeric类型,小数位看需要随意设,除数与被除数必须要有一个为decimal/numeric中的类型,
如下例:
SELECT 24.0000/38.0000 --0
SELECT CAST(24/38 AS NUMERIC(18,4)) --0
SELECT CAST(24/38.0000 AS NUMERIC(18,4)) --0.6316 此结果已经四舍五入
SELECT 24.0000/38.0000 --0.6316
decimal/numeric与int类型运算时会得出decimal/numeric类型的结果,因为decimal/numeric的优先级比int高。
参照MSDN上的类型优先级表:
SQL Server 2005 对数据类型使用以下优先级顺序:
- 用户定义数据类型(最高)
- sql_variant
- xml
- datetime
- smalldatetime
- float
- real
- decimal
- money
- smallmoney
- bigint
- int
- smallint
- tinyint
- bit
- ntext
- text
- image
- timestamp
- uniqueidentifier
- nvarchar(包括 nvarchar(max))
- nchar
- varchar (包括 varchar(max))
- char
- varbinary(包括 varbinary(max))
- binary(最低)