为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:
例:28000 显示为 2.8×10⁴
数据库输出即为 2.8×10⁴
规则上满足了,显示还是有些问题,还是基于
select to_char(28000,'FM9.9EEEE')
改写,1.12280313123×10¹³这种情况还需要自己改下
CREATE TABLE T2 (C1 VARCHAR(100));
INSERT INTO "SYSDBA"."T2" ("C1") VALUES ('28000');
INSERT INTO "SYSDBA"."T2" ("C1") VALUES ('1024');
INSERT INTO "SYSDBA"."T2" ("C1") VALUES ('1024000000000000000000000000000000000000000000000');
COMMIT;
--创建函数
CREATE OR REPLACE FUNCTION INT1 (INT01 VARCHAR)
RETURN VARCHAR
AS
T0 VARCHAR =(UNISTR('\2070'));
T1 VARCHAR =(UNISTR('\2071'));
T2 VARCHAR =(UNISTR('\2072'));
T3 VARCHAR =(UNISTR('\2073'));
T4 VARCHAR =(UNISTR('\2074'));
T5 VARCHAR =(UNISTR('\2075'));
T6 VARCHAR =(UNISTR('\2076'));
T7 VARCHAR =(UNISTR('\2077'));
T8 VARCHAR =(UNISTR('\2078'));
T9 VARCHAR =(UNISTR('\2079'));
BEGIN
SELECT ( SELECT A1 ||'×10'|| REPLACE( REPLACE( REPLACE(REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(REPLACE(REPLACE(A2, '0', T0), '1', T1), '2', T2), '3', T3), '4', T4) , '5', T5) , '6', T6) , '7', T7) , '8', T8), '9', T9)
FROM ( SELECT A1,
CASE WHEN SUBSTR(A2, 1, 1) = '0' THEN SUBSTR(A2, 2) ELSE A2 END AS A2
FROM ( SELECT SUBSTR(TO_CHAR(INT01,'FM9.9EEEE'),1,(INSTR(TO_CHAR(INT01,'FM9.9EEEE'),'E'))-1) AS A1 ,
SUBSTR(TO_CHAR(INT01,'FM9.9EEEE'),(INSTR(TO_CHAR(INT01,'FM9.9EEEE'),'+'))+1) AS A2
FROM DUAL) T11)) INTO INT01;
RETURN INT01;
END;
--返回结果
SELECT INT1(C1) FROM T2 ;
使用
select to_char(28000,'FM9.9EEEE')
可以得到 2.8E+04 这样的格式,不知道是否能够满足需求