java拼接sql保留两位小数_SQL 保留两位小数的实现方式

java拼接sql保留两位小数_SQL 保留两位小数的实现方式问题 客户要求 跟金额相关的数据 打印出来要保留两位小数 比如 13 2 13 200 要显示为 13 20 分析 首先查看数据库中的数据定义 均为 decimal 12 2 直接通过数据库查询的结果也会保留两位小数 但是代码处理后 却会忽略掉最后一个 零 位 此处有两个解决方案 一 代码中处理 检测到为金额字段 做特殊处理 二 修改查询 SQL 语句去规避此问题 第一种方法 无论通过数据类型还是字

问题:

客户要求,跟金额相关的数据,打印出来要保留两位小数,比如:13.2/13.200要显示为13.20;

分析:

首先查看数据库中的数据定义,均为decimal(12,2) ,直接通过数据库查询的结果也会保留两位小数,但是代码处理后,却会忽略掉最后一个“零”位。

此处有两个解决方案:

一、 代码中处理,检测到为金额字段,做特殊处理;二、修改查询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%

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213809.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午5:36
下一篇 2026年3月18日 下午5:36


相关推荐

  • SpringBoot2.x跨域问题(CrossOrigin失效问题)

    SpringBoot2.x跨域问题(CrossOrigin失效问题)SpringBoot 版本的不同 CrossOrigin 失效了 正确配置如下 CrossOrigin originPatter allowCredent true maxAge 3600

    2025年8月31日
    5
  • Linux运维常见面试题汇总

    Linux运维常见面试题汇总Linux面试题一、填空题1. 在Linux 系统中,以文件方式访问设备。2.Linux 内核引导时,从文件/etc/fstab中读取要加载的文件系统。3.Linux 文件系统中每个文件用indoe节点来标识。4. 全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i 节点表块 和 数据存储块 。5. 链接分为:硬链接 和 符号链接 。

    2022年6月13日
    21
  • 【Cubieboard2】配置编译内核支持SPI全双工通信驱动

    【Cubieboard2】配置编译内核支持SPI全双工通信驱动1,cubieboard2A20系列,无论是官方还是社区的系统,默认都是不支持SPI总线驱动的。需要重新编译配置内核,修改文件才能支持SPI全双工通信。本文以Cuieboard2Debain为例,进行讲解;2,重新编译配置内核(1)先去官网下载对应版本的linux内核源码,地址:https://github.com/linux-sunxi/linux-sunxi我下载的是sun-xi

    2022年7月22日
    12
  • mac解压7z格式文件[通俗易懂]

    mac解压7z格式文件

    2022年2月9日
    321
  • kafuka 的安装以及基本使用

    kafuka 的安装以及基本使用最近因为项目需要所以需要使用kafka所以自己最近也实践了下。下面为大家简单介绍下在windows下的安装使用因为它是基于zookepper的使用也要安装zookepper1.安装ZookeeperKafka的运行依赖于Zookeeper,所以在运行Kafka之前我们需要安装并运行Zookeeper1.1下载安装文件:http://mirror.bit.edu.cn/apache…

    2022年6月11日
    47
  • 可变形卷积:Deformable ConvNets

    可变形卷积:Deformable ConvNets可变形卷积 DeformableCo 论文网址 DeformableCo 论文网址 DeformableCo MoreDeformab BetterResult 代码 https github com CharlesShang DCNv2 tree pytorch 0 4DCNv11 空洞卷积 dilatedconv 在图像分割领域 图像输入到 CNN 典型的网络比如 FC

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号