Mějte na paměti, že transformujete číslo na řetězec. Číslo nemá žádný význam "," nebo "." nebo cokoli – je to číslo.
Trik je získat TO_CHAR
funkce pro převod interního čísla na požadovanou řetězcovou reprezentaci. Existuje několik problémů, kterých je třeba se obávat:správné určení radixové tečky (desetinné) a řešení výplně.
Zde je pracovní příklad:
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
Příslušné části masky:
FM
se používá k oříznutí úvodních a koncových mezer, které Oracle běžně používá k vyplnění čísel.
D
je radixový bod v závislosti na vašem nastavení NLS.
NLS_NUMERIC_CHARACTERS ...
je přepsáním vašich místních nastavení NLS – to nemusí být nutné, pokud vaše národní prostředí používá jako desetinnou čárku, ale je to způsob, jak můžete toto chování vynutit v databázi, řekněme, s nastavením pro Severní Ameriku.