Husk, at du omdanner et tal til en streng. Nummeret har ikke nogen betydning af "," eller "." eller hvad som helst - det er et tal.
Tricket er at få TO_CHAR
funktion til at konvertere det interne tal til den strengrepræsentation, du ønsker. Der er et par problemer at bekymre sig om:at få radix-punktet (decimal) korrekt og at håndtere udfyldning.
Her er et fungerende eksempel:
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 dele af masken:
FM
bruges til at trimme førende og efterfølgende blanke, som Oracle normalt bruger til at udfylde tal.
D
er radixpunktet, afhængigt af dine NLS-indstillinger.
NLS_NUMERIC_CHARACTERS ...
er en tilsidesættelse af dine lokale NLS-indstillinger - dette er muligvis ikke nødvendigt, hvis din lokalitet bruger et komma for decimalen, men det er en måde, du kan gennemtvinge denne adfærd i en database med f.eks. nordamerikanske indstillinger.