oracle把一个整数变成小数点,取整数位和小数点后的位数

今天有人问,怎么取一个数字的整数位,并且看他的小数点后有几位?

以下是这个sql:

sys@ORALOCAL(192.168.0.22)> SELECT trunc(&num) num_int,

2 CASE

3 WHEN abs(&num) >= 1 THEN

4 length('&num') - decode(instr(&num, '.'), 0, NULL, instr(&num, '.'))

5 ELSE

6 length('&num') - decode(instr(&num, '.'), 0, NULL, instr(&num, '.')) - 1

7 END num_of_after_dot

8 FROM dual;

输入 num 的值: 123.45

原值 1: SELECT trunc(&num) num_int,

新值 1: SELECT trunc(123.45) num_int,

输入 num 的值: 123.45

原值 3: WHEN abs(&num) >= 1 THEN

新值 3: WHEN abs(123.45) >= 1 THEN

输入 num 的值: 123.45

输入 num 的值: 123.45

输入 num 的值: 123.45

原值 4: length('&num') - decode(instr(&num, '.'), 0, NULL, instr(&num, '.'))

新值 4: length('123.45') - decode(instr(123.45, '.'), 0, NULL, instr(123.45, '.'))

输入 num 的值: 123.45

输入 num 的值: 123.45

输入 num 的值: 123.45

原值 6: length('&num') - decode(instr(&num, '.'), 0, NULL, instr(&num, '.')) - 1

新值 6: length('123.45') - decode(instr(123.45, '.'), 0, NULL, instr(123.45, '.')) - 1

NUM_INT NUM_OF_AFTER_DOT

---------- ----------------

123 2

已用时间: 00: 00: 00.00

sys@ORALOCAL(192.168.0.22)>

sys@ORALOCAL(192.168.0.22)>

sys@ORALOCAL(192.168.0.22)>

sys@ORALOCAL(192.168.0.22)>

sys@ORALOCAL(192.168.0.22)> /

输入 num 的值: 0.232

原值 1: SELECT trunc(&num) num_int,

新值 1: SELECT trunc(0.232) num_int,

输入 num 的值: 0.232

原值 3: WHEN abs(&num) >= 1 THEN

新值 3: WHEN abs(0.232) >= 1 THEN

输入 num 的值: 0.232

输入 num 的值: 0.232

输入 num 的值: 0.232

原值 4: length('&num') - decode(instr(&num, '.'), 0, NULL, instr(&num, '.'))

新值 4: length('0.232') - decode(instr(0.232, '.'), 0, NULL, instr(0.232, '.'))

输入 num 的值: 0.232

输入 num 的值: 0.232

输入 num 的值: 0.232

原值 6: length('&num') - decode(instr(&num, '.'), 0, NULL, instr(&num, '.')) - 1

新值 6: length('0.232') - decode(instr(0.232, '.'), 0, NULL, instr(0.232, '.')) - 1

NUM_INT NUM_OF_AFTER_DOT

---------- ----------------

0 3

已用时间: 00: 00: 00.03

sys@ORALOCAL(192.168.0.22)> /

输入 num 的值: -234

原值 1: SELECT trunc(&num) num_int,

新值 1: SELECT trunc(-234) num_int,

输入 num 的值: -234

原值 3: WHEN abs(&num) >= 1 THEN

新值 3: WHEN abs(-234) >= 1 THEN

输入 num 的值: -234

输入 num 的值: -234

输入 num 的值: -234

原值 4: length('&num') - decode(instr(&num, '.'), 0, NULL, instr(&num, '.'))

新值 4: length('-234') - decode(instr(-234, '.'), 0, NULL, instr(-234, '.'))

输入 num 的值: -234

输入 num 的值: -234

输入 num 的值: -234

原值 6: length('&num') - decode(instr(&num, '.'), 0, NULL, instr(&num, '.')) - 1

新值 6: length('-234') - decode(instr(-234, '.'), 0, NULL, instr(-234, '.')) - 1

NUM_INT NUM_OF_AFTER_DOT

---------- ----------------

-234

已用时间: 00: 00: 00.03

sys@ORALOCAL(192.168.0.22)> -234

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值