trunc函数!数据集成时,写一个查询语句,将某字段为小数的数据变成整数
- 一、需求描述
- 二、trunc()函数
- 2.1认识
- 2.2使用
- 三、解决方案
一、需求描述
工作中,我们经常会做数据集成,将其他项目组的数据库数据集成到自己项目组的库中使用。
对方是Oracle数据库,某一个字段为work_id,大部分的值都是整数,少部分的值因为某原因存为小数。
我方数据库为MySQL数据库,work_id的类型为int8整形,且老大要求将work_id数据的值取整。
一般情况下,对面有什么数据,我们整个拿过来就可以了,那就不用过滤,将work_id的类型改为浮点型即可。
二、trunc()函数
在解决问题之前,我们先来学习一下Oracle的trunc()函数。
2.1认识
trunc是一种函数,功能和函数INT类似,是截取日期或数字,返回指定的值。函数trunc直接去除数字的小数部分,而函数INT则是向下舍入到最接近的整数。
2.2使用
(1)日期值处理
trunc(data,[fmt])
date 是必须输入的一个日期值,fmt 参数可忽略,是日期格式,缺省时表示指定日期的0点。
举例:
--sysdate和trunc(sysdate)是不一样的 sysdate在当天的零时零分零秒等于trunc(sysdate)
trunc(sysdate,'yyyy') --返回当年第一天.
trunc(sysdate,'mm') --返回当月第一天.
trunc(sysdate,'d') --返回当前星期的第一天.
trunc(sysdate,'dd')--返回当前年月日
trunc(sysdate, 'hh')--返回当前小时
trunc(sysdate, 'mi')--返回当前分钟// An highlighted block
var foo = 'bar';
(2)数值处理
TRUNC(number,[decimals])
number 为必要参数,是输入的一个number数值
decimals 参数可忽略,是要截取的位数,缺省时表示截掉小数点后边的值。
举例
--968.66,将小数点右边指定位数后面的截去;
trunc(968.667,2)
--800,第二个参数可以为负数,表示将小数点左边指定位数后面的部分截去,即均以0记;
trunc(823.887,-2)
--888,默认截去小数点后面的部分;
trunc(888.666)
三、解决方案
因为需求上只用将小数变成整数,所以我将查询到的数据集进行select,对work_id进行取整。
语句如下:
select id,trunc(work_id) work_id from a;
--a为结果集