Houd er rekening mee dat u een getal omzet in een tekenreeks. Het nummer heeft geen betekenis van "," of "." of wat dan ook - het is een getal.
De truc is om de TO_CHAR
. te krijgen functie om het interne getal om te zetten naar de gewenste tekenreeksweergave. Er zijn een paar problemen om je zorgen over te maken:het radixpunt (decimaal) correct krijgen en omgaan met opvulling.
Hier is een werkend voorbeeld:
SELECT to_char(0.00235,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
0,00235
SELECT to_char(156.45823,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
156,45823
SELECT to_char(-0.0235,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
-0,0235
SELECT to_char(-156.45623,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
-156,45623
SELECT to_char(123456789.45623,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
123456789,45623
De relevante delen van het masker:
FM
wordt gebruikt om voorloop- en volgspaties in te korten die Oracle normaal gesproken gebruikt om getallen op te vullen.
D
is het wortelpunt, afhankelijk van uw NLS-instellingen.
NLS_NUMERIC_CHARACTERS ...
is een overschrijving van uw lokale NLS-instellingen - dit is misschien niet nodig als uw landinstelling een komma gebruikt voor het decimaalteken, maar het is een manier waarop u dit gedrag kunt forceren in een database met bijvoorbeeld Noord-Amerikaanse instellingen.