SQL SERVER四舍五入你除了用ROUND还有其他方法吗?

引言

今天和测试沟通一个百分比计算方式时遇到一个问题, 我在存储过程里用到了强转CAST(32.678 AS DECIMAL(5,1))  我认为该方式只会保留一位小数,我给测试的回复是我并没有用到四舍五入函数,数据也没有四舍五入,而测试说他们自己验证后觉的数据是经过四舍五入了的。 想到这里于是我再试了试存储过程的每个计算点,才发现了这个问题。

ROUND

那么用到四舍五入并且保留小数点时我们肯定会首选ROUND函数,  如果字段的数据类型是decimal(18,10)时那么四舍五入后还会有很多0出现。

CAST和CONVERT

其实我使用强转时并没有打算四舍五入结果,只是单纯为了得到符合我要求的数据,今天才发现这两个强转也会四舍五入结果,也就是说下面三个语句将会返回相同的结果值

select ROUND(32.678,1)    --32.700

select CAST(32.678 as DECIMAL(5,1))  --32.7

select convert(NUMERIC(5,1),32.678)  --32.7
时间: 2024-11-10 01:09:53

SQL SERVER四舍五入你除了用ROUND还有其他方法吗?的相关文章

SQL Server 中关于EXCEPT和INTERSECT的使用方法

熟练使用SQL Server中的各种使用方法会给查询带来非常多方便.今天就介绍一下EXCEPT和INTERSECT.注意此语法仅在SQL Server 2005及以上版本号支持. EXCEPT是指在第一个集合中存在,可是不存在于第二个集合中的数据. INTERSECT是指在两个集合中都存在的数据. 測试例如以下: create table t1(id int,mark char(2)) go create table t2(id int,mark char(2)) go insert into

(转) SQL Server中 ldf 文件过大的解决方法

原文地址:http://blog.itpub.net/35489/viewspace-616459/ 在SQL Server中经常遇到事务日志变大的情况,除了将数据库设置为“自动收缩”外,还可以使用下面的SQL命令进行快速清除数据库中的事务日志,命令如下:  - 第一步:清空日志  DUMP TRANSACTION   databasename   WITH   NO_LOG  -- 第二步:截断事务日志  BACKUP LOG   databasename   WITH   NO_LOG  -

java连接sql server 2008的问题(jdbc驱动的方法)

这是程序代码,我是按照网上和视频讲解的步骤写的代码:import java.sql.*;public class jdbc {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubConnection ct = null;PreparedStatement ps = null;ResultSet rs = null;try {//第一步,加载驱动Class.forNa

SQL Server 2008 R2 里迁移系统数据库的方法

针对不同的场景,采用不同的步骤. 对非master以及resource系统数据库而言,分两种情况. 1.非master以及resource系统数据库正常. 这里以迁移msdb为例,将msdb从D:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\迁移到D:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\system\目录下. 首先我们检查当前msdb的路径 ? 1 2 3 SELECT name, phys

SQL Server、Oracle和MySQL判断NULL的方法

SQL Server.Oracle和MySQL判断NULL的方法 本文讲述SQL Server.Oracle.MySQL查出值为NULL的替换. 在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办? 1.MSSQL: ISNULL() 语法 Java代码 复制代码代码如下: ISNULL ( check_expression , replacement_value ) ISNULL ( check_expression , replacement_value )

SQL点滴7—使用SQL Server的attach功能出现错误及解决方法

原文:SQL点滴7-使用SQL Server的attach功能出现错误及解决方法 今天用SQL Server 2008的attach功能附加一个数据库,出了点问题,提示的错误是: Unable to open physical file "D:\Documents\Dalt\XXXX.mdf" Operating system error 5: "5(error not found)" (Microsoft SQL Server: Error 5120)"

SQL Server不能通过外部IP访问,解决方法

SQL Server不能通过外部IP访问,解决方法 版本:SQL server 2017 express with tools 打开配置管理器,开启 TCP,右键属性设置TCP端口: 设置节点: IP1 外部IP/服务器内网IP,比如我的用了192.168.3.101,若要外部访问则一定要用外网IP,并设置端口为1433 IP4 127.0.0.1,并设置端口为1433 IPALL,设置端口为1433 以下为截图: PS:另外配置更改保存后,一定要重启数据库服务器. 原文地址:https://w

Sql Server将一列字段拼接成字符串方法

最近在项目中遇到个问题,需要将表中某列字段合并成字符串输出,如果直接通过代码全部读取出来,再遍历进行拼接显然不是最好的方法,所以想着能否在数据读取的时候直接拼接好返回,网上搜了可通过for xml来实现. 首先,准备好需要的数据,脚本如下: if exists (select * from sysObjects where id=object_id('Student')) drop table Student go create table Student ( Id int, Name varc

对于SQL SERVER中评估期已过的处理方法

在我们日常,相信大家都遇到过这样一个问题,当一个软件用了时间达到一定时间后,便需要再次激活 或者需要注册. 而最近我在做项目期间,我的数据库sql server由于180天已过,也出现了这种问题. 出现了这种问题,我并没有在意,而是每次都把时间调到1月1日,这样,数据库会以为时间还真的在1月1日,这样就可以使用了.但是今天我找赵崇来帮我解决问题时刻,他就说到,你这就是将就. 所以我开始去找解决方案,在网上找了好多方法,以下是我的解决方案: 1.首先,找到sql server的配置中心,点击"维护