边儿上的小人您要嫌碍事儿,可将鼠标放在上头,边上底下有个叉,点一下就收起来了

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

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

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

例如 0.001KG,要换成 1G

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

image

同时,可以使用length来确定这个数值的位数

image

那么就可以发现,通过相减,就可以得到小数点后的位数了

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

image

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

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

有返回行就说明是符合的,没有返回就说明是不符合的

image

但是这种会有个问题,我们知道instr在没查到的时候会返回0,那么如果不存在小数点的大于两位数的话,同样会符合

因此要再加一个条件instr(12.1235,'.') > 0来确保这个是存在小数点的

最后即

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

以上

posted @   DbWong_0918  阅读(938)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示