问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Oracle SQL查询数字是否为小数点后两位

创作时间:
作者:
@小白创作中心

Oracle SQL查询数字是否为小数点后两位

引用
1
来源
1.
https://www.cnblogs.com/jokingremarks/p/18195889

在数据库开发和维护中,有时需要判断数字的小数位数。本文将介绍如何使用Oracle SQL查询数字是否为小数点后两位,这对于处理需要精确控制小数位数的业务场景非常有帮助。

因为业务要求,需要对系统中的属性值进行更新,如果数据为小数点后三位及以上,则需要将对应的单位进行变更,并将数据同步翻倍。例如 0.001KG,要换成 1G。

我们知道INSTR可以找某个字符的位置,同样的,我们可以通过INSTR查找小数点的位置。

同时,可以使用LENGTH来确定这个数值的位数。那么就可以发现,通过相减,就可以得到小数点后的位数了。

select LENGTH(12.1235) - instr(12.1235 , '.') from dual

那么要找到小数点后三位及以上,就可以用减去的结果大于2来判断。

select count(1) from dual where (length(12.1235) - instr(12.1235 , '.')) > 2

有返回行就说明是符合的,没有返回就说明是不符合的。但是这种会有个问题,我们知道INSTR在没查到的时候会返回0,那么如果不存在小数点的大于两位数的话,同样会符合。因此要再加一个条件:

instr(12.1235,'.') > 0

来确保这个是存在小数点的。最后即:

select count(1) from dual where (length(12.1235) - instr(12.1235 , '.')) > 2 and instr(12.1235,'.') > 0

以上。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号