Oracle Number Function - Oracle/PLSQL TO_NUMBER Function






This Oracle tutorial explains how to use the Oracle/PLSQL TO_NUMBER function.

The Oracle/PLSQL TO_NUMBER function converts a string to a number.

Syntax

TO_NUMBER(x [, format], [ nls_language ]) converts x to a NUMBER.

  • x is the string that will be converted to a number.
  • format, optional, is the format that will be used to convert x to a number.
  • nls_language, optional, is the nls language used to convert x to a number.

Number Format Elements:

ElementExampleDescription
, .1,234.56Commas and decimal points
$$123.45Leading dollar sign.
00012.34Leading or trailing 0.
9123Any digit.
BB123Leading blank for integers.
CC123The ISO currency symbol defined in the NLS_ISO_CURRENCY parameter.
D123D99The current decimal character defined in the NLS_NUMERIC_CHARACTERS parameter. The default value is a period.
EEEE1.2EEEReturns a value in scientific notation.
G9G123Returns the group separator (e.g., a comma).
LL123Returns the local currency symbol.
MI123MInegative value with trailing minus sign; returns positive value with a trailing blank.
PR123PRThe negative values in angle brackets.
RNIvalues in Roman numerals, uppercase.
rnivalues in Roman numerals, lowercase.
S (prefix)S1234negative values with a leading minus sign, positive values with a leading positive sign.
S (suffix)1234Snegative values with a trailing minus sign, positive values with a trailing positive sign.
TMTMThe text minimum number format model returns the smallest number of characters possible.
UU123the Euro currency symbol or the NLS_DUAL_CURRENCY parameter.
V123V99a value multiplied by 10n, where n is the number of 9s after the V.
XXXXXthe hexadecimal value.




Example


SQL> select to_number('123.45') from dual;
--   w w  w . ja  v a  2 s  .  c  o m
TO_NUMBER('123.45')
-------------------
             123.45

SQL> select to_number('123.45', '9999.99') from dual;

TO_NUMBER('123.45','9999.99')
-----------------------------
                       123.45

SQL> select to_number('12', '99') from dual;

TO_NUMBER('12','99')
--------------------
                  12

SELECT TO_NUMBER('$12,123.23','$999,999.99') FROM DUAL;

SQL>
SQL>
SQL>
SQL>

Do calculation after the conversion


SQL> select to_number('123.45') + 2 from dual;
--   ww  w . j  a  v  a2 s  . c  o  m
TO_NUMBER('123.45')+2
---------------------
               125.45

SQL> SELECT TO_NUMBER('-$12,345.67', '$99,999.99') FROM dual;

TO_NUMBER('-$12,345.67','$99,999.99')
-------------------------------------
                            -12345.67

SQL>