How to Format Numbers as Roman Numerals in Oracle

When using the TO_CHAR() function in Oracle Database, you can use the RN format element to return the number as roman numerals. Using lowercase (rn) returns the roman numerals in lowercase.

Example

Here’s an example to demonstrate:

SELECT TO_CHAR(748, 'fmRN') FROM DUAL;

Result:

DCCXLVIII

Note that I’m using the fm format modifier to suppress any padding that might be applied.

Here’s what happens when I remove the fm format modifier:

SELECT TO_CHAR(748, 'RN') FROM DUAL;

Result:

      DCCXLVIII     

Lowercase

Using a lowercase rn returns the roman numerals in lowercase:

SELECT TO_CHAR(748, 'fmrn') FROM DUAL;

Result:

dccxlviii

Out of Range

When using the RN/rn format element, the value must be between 1 and 3999.

Here’s what happens when I provide a number outside of this range:

SELECT TO_CHAR(4000, 'fmrn') FROM DUAL;

Result:

###############

But reducing it by 1 is fine:

SELECT TO_CHAR(3999, 'fmrn') FROM DUAL;

Result:

mmmcmxcix

And here’s a negative value:

SELECT TO_CHAR(-1, 'fmrn') FROM DUAL;

Result:

###############