您好,欢迎来到爱问旅游网。
搜索
您的当前位置:首页SQL保留两位小数,四舍五入

SQL保留两位小数,四舍五入

来源:爱问旅游网
SQL保留两位⼩数,四舍五⼊

SQL 保留两位⼩数,四舍五⼊

转⾃

⼀、问题描述

数据库⾥的 float momey 类型,都会精确到多位⼩数。但有时候 我们不需要那么精确,例如,只精确到两位有效数字。⼆、解决:

1. 使⽤ Round() 函数,如 Round(@num,2) ,其中参数 2 表⽰ 保留两位有效数字。缺点:Round() 只是负责四舍五⼊到两位⼩数,但是不负责截断。print ROUND(13.145, 2);或者select ROUND(13.145, 2);结果为:13.150。

2. 使⽤ Convert(decimal(18,2),@num) 实现转换,其中参数 2 表⽰ 保留两位有效数字。print Convert(decimal(18,2),13.145) 结果为:13.15。

3.使⽤ cast(@num as decimal(18,2)) 实现转换,其中参数 2 表⽰ 保留两位有效数字。print cast(13.145 as decimal(18,2))结果为:13.15。

4、CAST与CONVERT相同点:

在⼤部分情况下,两者执⾏同样的功能,都可以执⾏数据类型转换,且都默认实现了四舍五⼊,相当于 print cast(round(13.145) as numeric(18,2)) 。5、CAST与CONVERT不同点:

  CONVERT还提供⼀些特别的⽇期格式转换,⽽CAST没有这个功能。

  既然CONVERT包括了CAST的所有功能,⽽且CONVERT还能进⾏⽇期转换,那么为什么需要使⽤CAST呢?实际上,这是为了ANSI/ISO兼容。CAST是ANSI兼容的,⽽CONVERT则不是。  语法:

  CAST (expression AS data_type [ (length ) ])

  CONVERT (data_type [ ( length ) ] , expression [ , style ])

  ⽰例:

  SELECT 'AB' + 1 --此语句报错,在将 varchar 值 'AB' 转换成数据类型 int 时失败。  SELECT 'AB' + CAST(1 AS varchar) --输出 AB1  SELECT 'AB' + CONVERT(varchar,1) --输出 AB1

  CAST和CONVERT都能转换时间:

  SELECT CONVERT(DateTime,'2011-07-11') --输出 2011-07-11 00:00:00.000  SELECT CAST('2011-07-11' AS DateTime) --输出 2011-07-11 00:00:00.000

  但是时间转字符串,CAST没有CONVERT这么多花样:

  SELECT CONVERT(varchar,GETDATE(),5) --输出 01-07-13  SELECT CONVERT(varchar,GETDATE(),111) --输出 2013/07/01

  SELECT CONVERT(varchar,GETDATE(),1) --输出 07/01/13  SELECT CAST(GETDATE() AS varchar) --输出 07 1 2013 9:56PM

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- awee.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务