Oracle-将Varchar强制转换为浮点并指定精度

Oracle-将Varchar强制转换为浮点并指定精度,oracle,casting,oracle10g,Oracle,Casting,Oracle10g,我需要将varchar转换为float。(varchar保证是一个数字) 我试图在预构建的表上创建一个物化视图。因此,所有数据类型必须完全匹配…包括数据类型的精度和大小。原始列(在添加NVL之前)来自精度为126的浮点数据类型。当我尝试将varchar强制转换为精度为126的浮点值时,它似乎不包括126数据精度 (我使用下面的查询创建了一个标准视图,并将其转换为float(126)。通过我的Toad IDE,我可以看到“ThisorThat”float列的精度为38),从而测试了它不包含126数

我需要将varchar转换为float。(varchar保证是一个数字)

我试图在预构建的表上创建一个物化视图。因此,所有数据类型必须完全匹配…包括数据类型的精度和大小。原始列(在添加NVL之前)来自精度为126的浮点数据类型。当我尝试将varchar强制转换为精度为126的浮点值时,它似乎不包括126数据精度

(我使用下面的查询创建了一个标准视图,并将其转换为float(126)。通过我的Toad IDE,我可以看到“ThisorThat”float列的精度为38),从而测试了它不包含126数据大小的事实

我只是用一个NVL语句更新了我的物化视图,就像这样

Select Cast(NVL(thisFloat, thatFloat) as Float(126)) as ThisorThat
....
From tables;
我得到错误“Ora-12060:预构建表的形状与定义查询不匹配”,因为大小与我“预构建”的原始表不同。我需要以某种方式将varchar转换为显式大小为126的浮点。有什么想法吗

版本:Oracle 10g

编辑: 这是一个基本上与我遇到的相同的问题。

使用

TO_BINARY_FLOAT(mynumberstring) 


实际上,您要做的不是强制转换,而是转换。

奇怪的是,考虑到函数名是“强制转换”--不幸的是,这对我不起作用,因为生成的数据类型是“二进制浮点”。我需要转换为“浮点”(126精度)
TO_BINARY_DOUBLE(mynumberstring)