TO_Char number format model in Oracle

Ponzaro picture Ponzaro · Jul 16, 2019 · Viewed 11k times · Source

I don't understand fully how can I use the to_char function to convert a number to a string with the appropriate format model.

The actual number has this type of format:

  • Uses comma as decimal separator
  • Always 5 decimal numbers
  • The integer numbers can up to 6 (potentially can be infinite, but for now they were never more than 6)
  • The number can be positive or negative
  • The number can begin with a 0

I've tried to use the to_char but I am not able to achieve a result that works with all the conditions

Some examples of how the output should be are 0,00235 or 156,45623 or -0,0235 or -156,45623

Answer

Jacob H picture Jacob H · Jul 16, 2019

Shamelessly stolen from this post from @Vadzim.

You should be able to get the format you're looking for by using this pattern:

rtrim(to_char(num, 'FM999999999999990.99'), '.')

https://rextester.com/QRSD48676

SELECT rtrim(to_char('0,00235', 'FM999999999999990.99999'), '.') FROM DUAL\\
SELECT rtrim(to_char('156,45623', 'FM999999999999990.99999'), '.') FROM DUAL\\  
SELECT rtrim(to_char('-0,0235', 'FM999999999999990.99999'), '.') FROM DUAL\\
SELECT rtrim(to_char('-156,45623', 'FM999999999999990.99999'), '.') FROM DUAL\\

Results:

0.00235
156.45623
-0.0235
-156.45623