今天有人问,怎么取一个数字的整数位,并且看他的小数点后有几位?
以下是这个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