使用SQL保留两位小数的实现方式

 更新时间:2024年11月04日 14:43:09   作者:YD_1989  
SQL中保留两位小数有三种方法:1、使用ROUND()函数进行四舍五入;2、使用CONVERT()函数和3、CAST()函数进行强制类型转换,这两种方法会截断多余的位数,ROUND()函数会保留0位,而CONVERT()和CAST()会删除多余的0

SQL保留两位小数的实现方式

SQL中保留两位小数的方法有三种,(第2、3种方法类似):

1、使用ROUND()函数

ROUND返回一个数值,舍入到指定的长度或精度,使用示例:

SELECT ROUND(123.9994, 3)   --123.9990
SELECT ROUND(123.9995, 3)   --124.0000
SELECT ROUND(748.584, -1)   --750.000
SELECT ROUND(748.586, -2)   --700.000
SELECT ROUND(748.586, -3)   --Error 将expression转换为数据类型 numeric 时出现算术溢出错误
SELECT ROUND(748.586, -4)   --0.000,如果length为负数,并且大于小数点前的数字个数,则ROUND将返回 0
SELECT ROUND(151.75, 0,0)   --152.00 舍入
SELECT ROUND(151.75, 0,1)   --151.00 截断

2、使用CONVERT()函数

使用示例:

SELECT CONVERT(DECIMAL(13,2),13.123) --13.12 

3、使用CAST()函数

使用示例:

SELECT CAST(13.123 as DECIMAL(13,2)) --13.12 

这三种方法(其实是两种),还是有区别的

区别在于ROUND()只是进行四舍五入,仍然会保留后面的位数为0,但是convert()和cast() 却会截断后面的位数

示例:

SELECT CONVERT(DECIMAL(13,2),13.123)    --13.12
SELECT CAST(13.123 as DECIMAL(13,2))    --13.12
SELECT ROUND(13.123,2)                  --13.120

根据需求这里采用第2种方案,但是仅这样处理还是不够的,返回的float型,经过代码处理后,仍然会舍去最后的"0"位。

最终的解决方案为:

数据库查询时,把float型数据转换为字符型,再交由代码处理返回给客户端。

具体实现为:

SELECT RTRIM(CONVERT(DECIMAL(13,2),13.123)) 

附RTRIM()的用法,返回删除了尾随空格的字符表达式。

RTRIM(character expression)

示例:

SELECT RTRIM('Hello   ')+'%'                    --Hello%
SELECT RTRIM('Hello')+'%'                       --Hello%
SELECT RTRIM('hello ' + '' + 'world ')+'%'      --helloworld%
SELECT RTRIM('hello ' + '' + 'world ')+'%'      --hello world%
SELECT RTRIM('hello' + ' ' + 'world ')+'%'      --hello world%

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • springboot整合规则引擎(liteflow)使用方式

    springboot整合规则引擎(liteflow)使用方式

    这篇文章主要介绍了springboot整合规则引擎(liteflow)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07
  • rocketmq client 日志的问题处理方式

    rocketmq client 日志的问题处理方式

    这篇文章主要介绍了rocketmq client 日志的问题处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Java + Selenium + OpenCV解决自动化测试中的滑块验证问题

    Java + Selenium + OpenCV解决自动化测试中的滑块验证问题

    OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上,这篇文章主要介绍了Java + Selenium + OpenCV解决自动化测试中的滑块验证,需要的朋友可以参考下
    2022-07-07
  • Java16 JDK安装并设置环境变量的方法步骤

    Java16 JDK安装并设置环境变量的方法步骤

    突然想起自己大学刚接触java的时候,要下载JDK和配置环境变量,那时候我上网找了很多教学,本文就详细的介绍一下Java16 JDK安装并设置环境变量,感兴趣的可以了解一下
    2021-09-09
  • Spring JPA联表查询之OneToOne源码详解

    Spring JPA联表查询之OneToOne源码详解

    这篇文章主要为大家介绍了Spring JPA联表查询之OneToOne源码详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • SpringBoot整合Junit与Mybatis实战指南

    SpringBoot整合Junit与Mybatis实战指南

    这篇文章给大家介绍SpringBoot整合Junit与Mybatis实战指南,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2026-02-02
  • SpringBoot中双token实现无感刷新

    SpringBoot中双token实现无感刷新

    本文介绍双Token无感刷新机制,前端React与后端SpringBoot实现,采用HttpOnly Cookie和短期Token设计,具有一定的参考价值,感兴趣的可以了解一下
    2025-07-07
  • Redis六大数据类型使用方法详解

    Redis六大数据类型使用方法详解

    这篇文章主要介绍了Redis六大数据类型使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • java 线程池封装及拒绝策略示例详解

    java 线程池封装及拒绝策略示例详解

    这篇文章主要为大家介绍了java 线程池封装及拒绝策略示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Java集合List相关面试题整理大全

    Java集合List相关面试题整理大全

    这篇文章主要给大家介绍了关于Java集合List相关面试题整理的相关资料,下面将提供一些常见的Java集合类面试题及其解答,帮助读者更好地准备面试,需要的朋友可以参考下
    2024-01-01

最新评论