Iwant zu Runde des Wertes bis zu 2 Komma, wenn die dritte Dezimalstelle größer als 5:individuelle Rundenlogik off in SQL
39.956 should be round off to 39.96,
35.665 should be round off to 35.66 ,
39.997 should be round off to 40.00 ,
56.684 should be round off to 56.68.
I unter
SELECT CAST(FLOOR(VALUE) AS VARCHAR2(30))
+ CASE
WHEN CAST(SUBSTR(SUBSTR(VALUE, INSTR(VALUE, '.')), 4) AS INT) > 5
THEN
CONCAT(
'.',
( SUBSTR(
SUBSTR(VALUE, INSTR(VALUE, '.')),
2,
2
)
+ 1)
)
ELSE
CONCAT(
'.',
SUBSTR(
SUBSTR(VALUE, INSTR(VALUE, '.')),
2,
2
)
)
END
FROM DUAL;
zu tun versucht, aber für die Grenzfälle, zum Beispiel 39.897 und 39.997 funktioniert nicht.
für SELECT RUNDE (39.995,2) VON dual; es gibt 40, aber ich möchte, dass es nur 39,99 ist, wie ich in der Frage gefragt habe, wenn die dritte Dezimalziffer größer als 5 ist (d. h. von 6), dann möchte ich nur die zweite Dezimalziffer erhöhen. Es unterscheidet sich etwas von der ursprünglichen runden Logik ROUND (NUM, 2), –
@Aleksej Ich denke, Sie sollten die "0,001" in den "runden" Anruf statt in die Daten setzen, um besser zu reflektieren, was getan werden muss . –
@MinkuJha ändern Sie es in 'Runde (39.995-001, 2)' dh 'Runde (Wert-001,2)' –