示例:
declare
  v_num     number;
begin
  v_num := to_number('$ 12345.67', '$ 999999.99');
end;

解决方案 »

  1.   

    oracle中的to_number函数只有一个参数,因此,不能直接达到你的要求SQL> select trunc(to_number('123.123'),2) from dual;TRUNC(TO_NUMBER('123.123'),2)
    -----------------------------
                           123.12实际:40
      

  2.   

    我的资料可能太老了
    :-)
    我试了一下,可以带多个参数
    其中最后面的那个是字符集参数
    如果数字格式在规定格式以内,可以用,在规定格式以外的话,就会出错SQL> select to_number('$12345.678', '$999999.99') from dual;
    select to_number('$12345.678', '$999999.99') from dual
                     *
    ERROR 位于第1行:
    ORA-01722: 无效数字
    实际:60
      

  3.   

    语法:TO_NUMBER(string[,format[,nlsparams]])
    目的:将CHAR或VARCHAR2类型的string转换为一个NUMBER类型的数值,如果指定了format,那么string应该遵循相应的数字格式。nlsparams的用来指定小数点和钱分位分隔符,以及货币符号。它与TO_CHAR()互为反函数
      

  4.   

    UPDATE employees SET salary = salary + 
       TO_NUMBER('100.00', '9G999D99')
       WHERE last_name = 'Perkins';SELECT TO_NUMBER('-AusDollars100','L9G999D99',
       ' NLS_NUMERIC_CHARACTERS = '',.''
         NLS_CURRENCY            = ''AusDollars''
       ') "Amount"
         FROM DUAL;我找到两个例子的,但还是看不懂那些参数的含义。
      

  5.   

    TO_NUMBER
    Syntax 
     TO_NUMBER(char [,fmt [, 'nlsparams'] ])
      
    Purpose 
     Converts char, a value of CHAR or VARCHAR2 datatype containing a number in the format specified by the optional format model fmt, to a value of NUMBER datatype.   
    Example 1 
     UPDATE emp SET sal = sal + 
       TO_NUMBER('100.00', '9G999D99')
      WHERE ename = 'BLAKE';
      
     
     The 'nlsparams' string in this function has the same purpose as it does in the TO_CHAR function for number conversions.   
    Example 2 
     SELECT TO_NUMBER('-AusDollars100','L9G999D99',
       ' NLS_NUMERIC_CHARACTERS = '',.''
         NLS_CURRENCY            = ''AusDollars''
       ') "Amount"
         FROM DUAL;    Amount
    ----------
          -100
      
      

  6.   

    1.语法:TO_NUMBER(string[,format[,nlsparams]])
    目的:将CHAR或VARCHAR2类型的string转换为一个NUMBER类型的数值,如果指定了format,那么string应该遵循相应的数字格式。
    2.范例
    DECLARE
      v_Num NUMBER;
    BEGIN
      v_Num := TO_NUMBER('$12345.67','$99999.99');
    END;
      

  7.   

    我查过文档了,感觉文档说得太不清楚了,对 那些参数的含义根本没有介绍的。
    我现在要把000012134,000034301这类数据转换为数值,请问该如何用to_number()函数呢?
      

  8.   

    直接转换即可
    SQL> select to_number('00001228') from dual;TO_NUMBER('00001228')
    ---------------------
                     1228实际:1262
      

  9.   

    SQL> select to_number('000012134') from dual;TO_NUMBER('000012134')
    ----------------------
                     12134