不能写TO_NUMBER

时间:2016-10-25 08:39:02

标签: oracle oracle11g string-conversion

我将表格中的数字保存为字符串,例如

25758313,1
200000000
1418213,04

我知道有1)总是没有组分隔符; 2)逗号作为小数分隔符,如果需要; 3)不再是2个十进制字符。

使用定义为to_number(string_val)的列创建视图的Triyng,但可以写出正确的表达式。

1 个答案:

答案 0 :(得分:2)

manual page for TO_NUMBER()有一个你可以适应的例子:

  

此函数中的'nlsparam'参数与其具有相同的目的   在TO_CHAR函数中进行数字转换。

SELECT TO_NUMBER('-AusDollars100','L9G999D99',
   ' NLS_NUMERIC_CHARACTERS = '',.''
     NLS_CURRENCY            = ''AusDollars''
   ') "Amount"
     FROM DUAL;

可能是这样的:

WITH data AS (
    SELECT '25758313,1' AS original_text FROM DUAL
    UNION ALL SELECT '200000000' FROM DUAL
    UNION ALL SELECT '1418213,04' FROM DUAL
)
SELECT original_text,
TO_NUMBER(original_text, '999999999999D999999999999', 'NLS_NUMERIC_CHARACTERS = '',.''') AS parsed_number
FROM data;
ORIGINAL_T PARSED_NUMBER
---------- -------------
25758313,1    25758313.1
200000000      200000000
1418213,04    1418213.04