【Oracle】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
以上
标签:instr,小数点,dual,SQL,Oracle,12.1235,select From: https://www.cnblogs.com/jokingremarks/p/18195889