Denken Sie daran, dass Sie eine Zahl in eine Zeichenfolge umwandeln. Die Zahl hat keinen Sinn für "," oder "." oder irgendetwas - es ist eine Zahl.
Der Trick besteht darin, den TO_CHAR
zu erhalten Funktion, um die interne Zahl in die gewünschte Zeichenfolgendarstellung umzuwandeln. Es gibt ein paar Probleme, über die Sie sich Sorgen machen müssen:Korrektes Dezimaltrennzeichen und Auffüllen.
Hier ist ein funktionierendes Beispiel:
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
Die relevanten Teile der Maske:
FM
wird verwendet, um führende und nachgestellte Leerzeichen zu entfernen, die Oracle normalerweise zum Auffüllen von Zahlen verwendet.
D
ist der Basispunkt, abhängig von Ihren NLS-Einstellungen.
NLS_NUMERIC_CHARACTERS ...
ist eine Überschreibung Ihrer lokalen NLS-Einstellungen - dies ist möglicherweise nicht erforderlich, wenn Ihr Gebietsschema ein Komma für die Dezimalstelle verwendet, aber es ist eine Möglichkeit, dieses Verhalten in einer Datenbank mit beispielsweise nordamerikanischen Einstellungen zu erzwingen.