DECLARE
tmp NUMBER(10,2) := 12345678.12;
pos1 NUMBER;
BEGIN
pos1 := INSTR(TO_CHAR(tmp),'.');
CASE
WHEN pos1 = 0 THEN
dbms_output.put_line(SUBSTR(TO_CHAR(tmp),1,7));
ELSE
dbms_output.put_line(SUBSTR(TO_CHAR(TRUNC(tmp)),1,7)||SUBSTR(TO_CHAR(tmp),pos1,3));
END CASE;
END;
8 个解决方案
#1
当你不够7位时 你就不能这样截取了
#2
试过不满位,也没问题。。就是觉得太麻烦了
#3
select substr(to_char(12345678.12),
1,
(select case
when instr(to_char(12345678.12), '.') - 1 <= 7 then
instr(to_char(12345678.12), '.') - 1
else
7
end
from dual)) ||
substr(to_char(12345678.12), instr(to_char(12345678.12), '.'), 3)
from dual;
#4
select substr(to_char(trunc(1234567.89)),1,7) from dual;
#5
SELECT SUBSTR(TO_CHAR(TRUNC(12345678.12)), 0, 7)|| TO_CHAR( MOD(12345678.12,1)) FROM DUAL;
#6
忘了整数了
SELECT SUBSTR(TO_CHAR(TRUNC(&tp)), 0, 7)||DECODE(MOD(&tp,1), 0, '', TO_CHAR(MOD(&tp,1))) FROM DUAL;
#7
SELECT substr(regexp_substr(to_char(123456.12),'\w+',1,1),1,7),regexp_substr(to_char(123456781021.12),'\W'),
regexp_substr(to_char(123456.12),'\w+',1,2)
from dual;
#8
SELECT substr(regexp_substr(to_char(123456.12),'\w+',1,1),1,7),regexp_substr(to_char(123456781021.12),'\W'),
regexp_substr(to_char(123456.12),'\w+',1,2)
from dual;
点赞,没想到用正则表达式~~
#1
当你不够7位时 你就不能这样截取了
#2
当你不够7位时 你就不能这样截取了
试过不满位,也没问题。。就是觉得太麻烦了
#3
当你不够7位时 你就不能这样截取了
试过不满位,也没问题。。就是觉得太麻烦了
select substr(to_char(12345678.12),
1,
(select case
when instr(to_char(12345678.12), '.') - 1 <= 7 then
instr(to_char(12345678.12), '.') - 1
else
7
end
from dual)) ||
substr(to_char(12345678.12), instr(to_char(12345678.12), '.'), 3)
from dual;
#4
select substr(to_char(trunc(1234567.89)),1,7) from dual;
#5
SELECT SUBSTR(TO_CHAR(TRUNC(12345678.12)), 0, 7)|| TO_CHAR( MOD(12345678.12,1)) FROM DUAL;
#6
忘了整数了
SELECT SUBSTR(TO_CHAR(TRUNC(&tp)), 0, 7)||DECODE(MOD(&tp,1), 0, '', TO_CHAR(MOD(&tp,1))) FROM DUAL;
#7
SELECT substr(regexp_substr(to_char(123456.12),'\w+',1,1),1,7),regexp_substr(to_char(123456781021.12),'\W'),
regexp_substr(to_char(123456.12),'\w+',1,2)
from dual;
#8
SELECT substr(regexp_substr(to_char(123456.12),'\w+',1,1),1,7),regexp_substr(to_char(123456781021.12),'\W'),
regexp_substr(to_char(123456.12),'\w+',1,2)
from dual;