【发布时间】:2021-01-22 03:08:39
【问题描述】:
我有以下 VARCHAR2 格式的源数据
,00100000004749745
,100000001490116
,125
,200000002980232
,25
,439999997615814
,5
0
1
1,10000002384186
1,5
100
2,1800000667572
3
3,29999995231628
96
999
将其转换为 NUMBER 的公式是什么?
如下
INSERT INTO table_b.column_b
SELECT
TO_NUMBER (column_a,'9999999999D9999999999999999999999',
'nls_numeric_characters= ''.,''') as my_numbers
FROM table_a.column_a;
我收到一个错误
ORA-01722: 无效号码错误消息。
我认为这是因为行以逗号开头,例如 (,125)。
在目标表中我需要这样的数字格式数据
0,00100000004749745
0,100000001490116
0,125
0,200000002980232
0,25
0,439999997615814
0,5
0
1
...
还尝试在逗号前面放零“0”,然后将其更改为数字
Select
column_a,
TO_NUMBER (column_a,'9999D9999999999999999999999',
'nls_numeric_characters= ''.,''') as my_number
from
(SELECT DISTINCT
'0'|| column_a
FROM table_a.column_a
WHERE column_a LIKE (',125')
);
但结果是
0,125 125
【问题讨论】:
-
如何将这个:
,5 0 1 1,10000002384186转换为有效数字? -
这是我的问题。在输出上我需要 0.5 0 1 1.10000002384186 等。这有可能吗?可能必须使用 CAST 或 TO_NUMBER 之外的其他格式。
-
您是否尝试将
,5 0 1 1,10000002384186转换为四个单独的数字? -
也许你,Daniel,应该重新格式化问题并 - 对于每个输入值 - 显示所需的输出值。注意格式化;文本——事实上——很难阅读。将其作为评论发布更加困难。
-
哦,是的,那是输入错误。我会修理它。
标签: sql oracle type-conversion oracle12c varchar2