经常要保留小数,在程序中计算太麻烦了,还要转换操作。直接在数据库中操作来得方便。
把数据类型定义成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(最低)