2011-05-23 1306 views
3

我需要将varchar转换为float。 (该varchar保证是一个数字)Oracle - 将Varchar转换为Float并指定精度

我试图在预建表的顶部创建一个物化视图。因此,所有数据类型必须完全匹配......包括数据类型的精度和大小。原始列(在添加NVL之前)是从FLOAT数据类型以126的精度拉取的。当我尝试将varchar转换为精度为126的浮点数时,它似乎不包含126数据精度。我通过创建一个标准视图来测试它不包含126数据大小,下面的查询将其转换为float(126)。通过我的Toad IDE,我可以看到“ThisorThat “浮柱是38)。

我只是更新我的物化视图,象这样一个NVL声明...

Select Cast(NVL(thisFloat, thatFloat) as Float(126)) as ThisorThat 
.... 
From tables; 

我得到的错误“ORA-12060:预先建立的表的形状不符合定义查询”,因为尺寸不同于我“预先构建”的原始表格。我需要以某种方式将varchar转换为显式大小为126的浮动。任何想法?

版本:Oracle 10g的

编辑: 这里有一个link这基本上是我遇到同样的事情。

回答

2

使用

TO_BINARY_FLOAT(mynumberstring) 

TO_BINARY_DOUBLE(mynumberstring) 

是你要实际做什么不打石膏,这是一个转换。

+0

奇数,考虑到函数名称是“Cast”-_- – contactmatt 2011-05-24 03:10:38

+0

不幸的是,这对我不起作用,因为结果数据类型是“BINARY_FLOAT”。我需要转换为“FLOAT”(126精度) – contactmatt 2011-05-25 14:57:08