select d,
CASE WHEN d < 0 THEN '-' ELSE '' END
|| CASE INT(d) WHEN 0 THEN '0' ELSE '' END
|| STRIP(CHAR(ABS(d)),L,'0') strip_a
, SUBSTR('-0',1+SIGN(INT(SIGN(d))+1),2-ABS(SIGN(INT(d)))-SIGN(INT(SIGN(d))+1))
|| STRIP(CHAR(ABS(d)),L,'0') strip_b
, RTRIM(SUBSTR('-0 ',2+SIGN(INT(d*2-1+6e-17)),2-ABS(SIGN(INT(d)))))
|| STRIP(CHAR(ABS(d)),L,'0') strip_c
, strip(strip(left(d, 1), L, '0'), L, '+')|| strip(strip(substr(d, 2)), L, '0') strip_d
, rtrim (char (integer (d))) || '.'|| substr (char (d),locate ('.', char (d))+1,length (char (d)) - locate ('.', char (d))) strip_e
FROM (VALUES -001.267, 0, 1234.5, 0.123, -0.123) dm(d);
strip_a strip_b strip_c is correct,
strip_d and strip_e is not all correct
运行结果:
引用
D STRIP_A STRIP_B STRIP_C STRIP_E
------------------- --------------------- --------------------- ---------------------- -------------------------------
-1.267000 -1.267000 -1.267000 -1.267000 -1.267000
0.000000 0.000000 0.000000 0.000000 0.000000
1234.500000 1234.500000 1234.500000 1234.500000 1234.500000
0.123000 0.123000 0.123000 0.123000 0.123000
-0.123000 -0.123000 -0.123000 -0.123000 0.123000
5 record(s) selected.