前端小数点前面不显示0的问题及sql 如何优先显示不为空null的字段 并进行排序

问题描述

java在读取oracle数据库数据的时候,若是oracle存储的为小数,介于(-1,1)之间,则不显示前面的0,
如:0.1214会读取为“.1214”,在如:“-0.3423”会读取为“-.3423”。
 
 
解决方案

为了解决java读取的为“0.112”而不是“.112”,可以修改数据库查询语句。

由原先的:
 
  1. select t.num from tableA t; ==>查询结果为:.112
修改为:
 
  1. select to_char(t.num,'fm999999990.999999999') from tableA t; ==>查询结果为:0.112

 

 

 

在使用order by语句进行查询结果排序时,不同的数据库对于被排序字段数据行为null的情况,处理方式有所不同,这里我们主要考虑oracle和mysql数据库。

首先我们直接给出结论:

【Oracle 结论】 
order by colum asc 时,null默认被放在最后
order by colum desc 时,null默认被放在最前
nulls first 时,强制null放在最前,不为null的按声明顺序[asc|desc]进行排序
nulls last 时,强制null放在最后,不为null的按声明顺序[asc|desc]进行排序 
【MySql 结论】
order by colum asc 时,null默认被放在最前
order by colum desc 时,null默认被放在最后
ORDER BY IF(ISNULL(update_date),0,1) null被强制放在最前,不为null的按声明顺序[asc|desc]进行排序
ORDER BY IF(ISNULL(update_date),1,0) null被强制放在最后,不为null的按声明顺序[asc|desc]进行排序

 

注:以上结果是在oracle11g及mysql5下的测试结果。

 

因此当我们在order by时,为了强制说明对于null的排序顺序就必须使用到:

针对【oracle】我们就需要使用以下语法:

order by order_col [asc|desc] nulls [first|last] 

而针对【mysql】我们则需要使用以下语法:

order by IF(ISNULL(my_field),1,0),my_field; 

转载:https://blog.csdn.net/oxcow/article/details/6554168

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值