我将表格中的数字保存为字符串,例如
25758313,1
200000000
1418213,04
我知道有1)总是没有组分隔符; 2)逗号作为小数分隔符,如果需要; 3)不再是2个十进制字符。
使用定义为to_number(string_val)的列创建视图的Triyng,但可以写出正确的表达式。
答案 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